修复关联查询也被标记为列的bug.比如 creator.name,应该解析为create."name".

This commit is contained in:
周浩
2016-06-21 16:59:36 +08:00
parent cc9ee96f0b
commit 08c56314c0

View File

@@ -62,6 +62,15 @@ public class DefaultSqlParamBuilder {
return instance;
}
public String encodeFiled(String field) {
if (field.contains(".")) {
String[] tmp = field.split("[.]");
return tmp[0] + "." + getDialect().getQuoteStart() + (filedToUpperCase() ? (tmp[1].toUpperCase()) : tmp[1]) + getDialect().getQuoteEnd();
} else {
return getDialect().getQuoteStart() + (filedToUpperCase() ? (field.toUpperCase()) : field) + getDialect().getQuoteEnd();
}
}
public KeyWordMapper getKeyWordMapper(String type) {
return (paramKey, tableName, term, jdbcType) -> {
String termField = term.getField();
@@ -124,7 +133,7 @@ public class DefaultSqlParamBuilder {
}
param.setData(listData);
String fields = mappings.keySet().stream()
.map(str -> new SqlAppender().add(getDialect().getQuoteStart(), filedToUpperCase() ? str.toUpperCase() : str, getDialect().getQuoteEnd()).toString())
.map(str -> new SqlAppender().add(encodeFiled(str), "").toString())
.reduce((f1, f2) -> new SqlAppender().add(f1, ",", f2)
.toString()).get();
//批量
@@ -166,9 +175,9 @@ public class DefaultSqlParamBuilder {
if (!appender.isEmpty())
appender.add(",");
if (!k.contains(".") || k.split("[.]")[0].equals(tableName)) {
appender.add(tableName, ".", getDialect().getQuoteStart(), filedToUpperCase() ? k.toUpperCase() : k, getDialect().getQuoteEnd(), " as ");
appender.add(tableName, ".", encodeFiled(k), " as ");
} else {
appender.add(getDialect().getQuoteStart(), filedToUpperCase() ? k.toUpperCase() : k, getDialect().getQuoteEnd(), " as ");
appender.add(encodeFiled(k), " as ");
}
appender.addEdSpc(getDialect().getQuoteStart(), k, getDialect().getQuoteEnd());
});
@@ -189,7 +198,7 @@ public class DefaultSqlParamBuilder {
if (!appender.isEmpty())
appender.add(",");
Map<String, Object> config = ((Map) fieldConfig.get(k));
appender.add(getDialect().getQuoteStart(), filedToUpperCase() ? k.toUpperCase() : k, getDialect().getQuoteEnd(), "=", "#{data.", v);
appender.add(encodeFiled(k), "=", "#{data.", v);
if (config != null) {
Object jdbcType = config.get("jdbcType"),
javaType = config.get("javaType");