protected SqlExpression generateUpdateSqlExpression(String condition, ColumnMap columnMap, String targetTableName, Object... parameterValues) {
        if (columnMap == null || columnMap.size() == 0) {
            throw new NullPointerException("columnMap:列映射对象为空或没有值");
        }

        int initCapacity = columnMap.size() + (parameterValues == null ? 0 : parameterValues.length);
        ArrayList<Object> parameters = new ArrayList<Object>(initCapacity);
        String[] setValues = new String[columnMap.size()];
        int i = 0;

        for (String key : columnMap.keySet()) {
            setValues[i] = String.format("%s = ?", key);
            parameters.add(columnMap.get(key));
            i++;
        }

        if (parameterValues != null && parameterValues.length > 0) {
            parameters.addAll(Arrays.asList(parameterValues));
        }

        String commandText = String.format("UPDATE %1$s SET %2$s WHERE %3$s ", targetTableName,
                StringExtension.join(",", setValues), condition);
        return new SqlExpression(commandText, parameters.toArray());
    }