|
@@ -22,7 +22,16 @@ public class JoinSqlProvider {
|
|
|
|
|
|
public static String getSql(Map<String, Object> paramMap) {
|
|
|
Sql<?> sql = (Sql<?>) paramMap.get(ISqlRunner.SQL);
|
|
|
- Map<String, String> tableAliasMap = sql.tableAliasMap;
|
|
|
+ try {
|
|
|
+ SqlContext.init(sql, paramMap);
|
|
|
+ return createSql(sql);
|
|
|
+ } finally {
|
|
|
+ SqlContext.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static String createSql(Sql<?> sql) {
|
|
|
+
|
|
|
List<IQueryColumn> queryFieldsList = sql.queryFieldsList;
|
|
|
List<ITable> queryTableList = sql.queryTableList;
|
|
|
List<QueryCondition> queryConditionList = sql.queryConditionList;
|
|
@@ -32,21 +41,21 @@ public class JoinSqlProvider {
|
|
|
StringBuilder sqlBuilder = new StringBuilder();
|
|
|
sqlBuilder
|
|
|
.append(SqlConstant.SELECT)
|
|
|
- .append(listFormatSql(queryFieldsList, tableAliasMap, paramMap, StringPool.COMMA))
|
|
|
+ .append(listFormatSql(queryFieldsList, StringPool.COMMA))
|
|
|
.append(SqlConstant.FROM)
|
|
|
- .append(getQueryTablesSql(queryTableList, tableAliasMap, paramMap));
|
|
|
+ .append(getQueryTablesSql(queryTableList));
|
|
|
|
|
|
- String where = listFormatSql(queryConditionList, tableAliasMap, paramMap, SqlConstant.AND);
|
|
|
+ String where = listFormatSql(queryConditionList, SqlConstant.AND);
|
|
|
if (StrUtil.isNotEmpty(where)) {
|
|
|
sqlBuilder.append(SqlConstant.WHERE).append(where);
|
|
|
}
|
|
|
|
|
|
- String groupBy = listFormatSql(groupByList, tableAliasMap, paramMap, StringPool.COMMA);
|
|
|
+ String groupBy = listFormatSql(groupByList, StringPool.COMMA);
|
|
|
if (StrUtil.isNotEmpty(groupBy)) {
|
|
|
sqlBuilder.append(SqlConstant.GROUP_BY).append(groupBy);
|
|
|
}
|
|
|
|
|
|
- String orderBy = listFormatSql(orderByList, tableAliasMap, paramMap, StringPool.COMMA);
|
|
|
+ String orderBy = listFormatSql(orderByList, StringPool.COMMA);
|
|
|
if (StrUtil.isNotEmpty(orderBy)) {
|
|
|
sqlBuilder.append(SqlConstant.ORDER_BY).append(orderBy);
|
|
|
}
|
|
@@ -54,30 +63,24 @@ public class JoinSqlProvider {
|
|
|
return sqlBuilder.toString();
|
|
|
}
|
|
|
|
|
|
- private static String getQueryTablesSql(List<ITable> queryTableList,
|
|
|
- Map<String, String> tableAliasMap,
|
|
|
- Map<String, Object> paramMap) {
|
|
|
+ private static String getQueryTablesSql(List<ITable> queryTableList) {
|
|
|
|
|
|
String from = queryTableList.stream()
|
|
|
.filter(item -> item instanceof Table)
|
|
|
- .map(item -> item.toSql(tableAliasMap, paramMap))
|
|
|
+ .map(IFormat::toSql)
|
|
|
.collect(Collectors.joining(StringPool.COMMA));
|
|
|
|
|
|
String join = queryTableList.stream()
|
|
|
.filter(item -> item instanceof TableJoin)
|
|
|
- .map(item -> item.toSql(tableAliasMap, paramMap))
|
|
|
+ .map(IFormat::toSql)
|
|
|
.collect(Collectors.joining(StringPool.EMPTY));
|
|
|
|
|
|
return from + join;
|
|
|
}
|
|
|
|
|
|
- private static String listFormatSql(List<? extends IFormat> list,
|
|
|
- Map<String, String> tableAliasMap,
|
|
|
- Map<String, Object> paramMap,
|
|
|
- String joinStr) {
|
|
|
-
|
|
|
+ private static String listFormatSql(List<? extends IFormat> list, String joinStr) {
|
|
|
return list.stream()
|
|
|
- .map(item -> item.toSql(tableAliasMap, paramMap))
|
|
|
+ .map(IFormat::toSql)
|
|
|
.filter(item -> ObjectUtil.notEqual(item, StringPool.EMPTY))
|
|
|
.collect(Collectors.joining(joinStr));
|
|
|
}
|