@Override
    public String buildUpdateSql(String databaseName, String schemaName, String tableName, Map<String, String> row, Map<String, String> primaryKeyMap) {
        StringBuilder script = new StringBuilder();
        script.append("UPDATE ");
        buildTableName(databaseName, schemaName, tableName, script);

        script.append(" SET ");
        List<String> setClauses = row.entrySet().stream()
                .map(entry -> entry.getKey() + " = " + entry.getValue())
                .collect(Collectors.toList());
        script.append(String.join(",", setClauses));

        if (MapUtils.isNotEmpty(primaryKeyMap)) {
            script.append(" WHERE ");
            List<String> whereClauses = primaryKeyMap.entrySet().stream()
                    .map(entry -> entry.getKey() + " = " + entry.getValue())
                    .collect(Collectors.toList());
            script.append(String.join(" AND ", whereClauses));
        }
        return script.toString();
    }
Generates a multi-row INSERT SQL statement.

@param schemaName Name of the database schema.
@param tableName  Name of the table to insert into.
@param columnList Optional list of column names.
@param valueLists List of lists, each inner list represents values for a row.
@return The complete multi-row INSERT SQL statement.
chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultSqlBuilder.java