in src/main/java/com/aliyun/ha3engine/jdbc/Ha3PreparedStatement.java [108:166]
private StringBuilder getSql(String sql) throws Ha3DriverException {
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.append(sql);
if (null != sqlAndParams) {
String kvpairs = String.valueOf(sqlAndParams[0]).replaceAll("\'", "");
if ("null".equals(kvpairs)) {
kvpairs = "";
}
List<Object> values = new ArrayList<>();
for (int i = 1; i < sqlAndParams.length; i++) {
values.add(sqlAndParams[i]);
}
if (values.size() > 0) {
// 替换
if (kvpairs.contains("dynamic_params:dynamic_params")) {
String dynamicParams = this.replaceJsonDynamicParams(values);
dynamicParams = JsonUtils.string2Unicode(dynamicParams);
if (kvpairs.contains("urlencode_data")) {
try {
kvpairs = new StringBuilder(
kvpairs.replace("dynamic_params:dynamic_params",
new StringBuilder().append("dynamic_params:").append(URLEncoder.encode(dynamicParams,ENCODING))))
.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else {
kvpairs = new StringBuilder(
kvpairs.replace("dynamic_params:dynamic_params",
new StringBuilder().append("dynamic_params:").append(dynamicParams)))
.toString();
}
} else {
StringBuilder kvPairs = new StringBuilder(kvpairs);
if ("" == kvpairs) {
kvpairs = kvPairs.append("dynamic_params:").append(this.replaceDynamicParams(values)).toString();
} else {
kvpairs = kvPairs.append(";").append("dynamic_params:").append(this.replaceDynamicParams(values)).toString();
}
}
}
if (!sql.contains("&&kvpair=")) {
sqlBuilder.append("&&kvpair=").append(kvpairs);
} else {
if (sql.endsWith(";")) {
sqlBuilder.append(kvpairs);
} else {
sqlBuilder.append(";").append(kvpairs);
}
}
}
return sqlBuilder;
}