in storage-jdbc/src/main/java/org/apache/rocketmq/schema/registry/storage/jdbc/dialect/mysql/MysqlDatabaseDialect.java [41:64]
public String buildUpsertStatement(TableId tableId, Collection<String> fields) {
final ExpressionBuilder.Transform<String> transform = (builder, col) -> {
builder.appendColumnName(col);
builder.append("=values(");
builder.appendColumnName(col);
builder.append(")");
};
ExpressionBuilder builder = expressionBuilder();
builder.append("insert into ");
builder.append(tableId);
builder.append("(");
builder.appendList()
.delimitedBy(",")
.transformedBy(ExpressionBuilder.columnNames())
.of(fields);
builder.append(") values(");
builder.appendMultiple(",", "?", fields.size());
builder.append(") on duplicate key update ");
builder.appendList()
.delimitedBy(",")
.transformedBy(transform)
.of(fields);
return builder.toString();
}