Skip to content

Commit 7966f84

Browse files
committed
feature: 新增2组 "自定义通用SQL查询条件"
<sql id="Where_Extend"> </sql> <sql id="Where_Extend_Condition"> </sql>
1 parent 8389d80 commit 7966f84

File tree

16 files changed

+1338
-1
lines changed

16 files changed

+1338
-1
lines changed

src/main/java/app/myoss/cloud/mybatis/mapper/template/AbstractMapperTemplate.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,72 @@ public String dynamicSql(Object record) {
5656
return "dynamicSql";
5757
}
5858

59+
/**
60+
* 获取"自定义通用SQL查询条件"
61+
*
62+
* <pre>
63+
* &lt;sql id=&quot;Where_Extend&quot;&gt;
64+
* &lt;if test=&quot;nameLike != null&quot;&gt;
65+
* AND name LIKE CONCAT('%', #{nameLike,jdbcType=VARCHAR}, '%')
66+
* &lt;/if&gt;
67+
* &lt;/sql&gt;
68+
* </pre>
69+
*
70+
* @param ms sql语句节点信息
71+
* @return 自定义通用SQL查询条件
72+
*/
73+
public String getWhereExtend(MappedStatement ms) {
74+
Configuration configuration = ms.getConfiguration();
75+
String namespace = StringUtils.substringBeforeLast(ms.getId(), ".");
76+
String sqlId = namespace + ".Where_Extend";
77+
if (!configuration.getSqlFragments().containsKey(sqlId)) {
78+
return null;
79+
}
80+
81+
XNode node = configuration.getSqlFragments().get(sqlId);
82+
try {
83+
StringWriter nodeContent = getNodeContent(node.getNode());
84+
return nodeContent.toString();
85+
} catch (TransformerException e) {
86+
throw new BizRuntimeException("get sqlFragments content failed, sqlId: " + sqlId, e);
87+
}
88+
}
89+
90+
/**
91+
* 获取"自定义通用SQL查询条件"
92+
*
93+
* <pre>
94+
* &lt;sql id=&quot;Where_Extend_Condition&quot;&gt;
95+
* &lt;if test=&quot;condition.nameLike != null&quot;&gt;
96+
* AND name LIKE CONCAT('%', #{condition.nameLike,jdbcType=VARCHAR}, '%')
97+
* &lt;/if&gt;
98+
* &lt;/sql&gt;
99+
* </pre>
100+
*
101+
* @param ms sql语句节点信息
102+
* @return 自定义通用SQL查询条件
103+
*/
104+
public StringBuilder getWhereExtendCondition(MappedStatement ms) {
105+
Configuration configuration = ms.getConfiguration();
106+
String namespace = StringUtils.substringBeforeLast(ms.getId(), ".");
107+
String sqlId = namespace + ".Where_Extend_Condition";
108+
if (!configuration.getSqlFragments().containsKey(sqlId)) {
109+
return null;
110+
}
111+
112+
XNode node = configuration.getSqlFragments().get(sqlId);
113+
StringBuilder sb = new StringBuilder();
114+
sb.append(" <if test=\"condition != null\">\n ");
115+
try {
116+
StringWriter nodeContent = getNodeContent(node.getNode());
117+
sb.append(nodeContent.toString());
118+
sb.append("\n </if>\n");
119+
} catch (TransformerException e) {
120+
throw new BizRuntimeException("get sqlFragments content failed, sqlId: " + sqlId, e);
121+
}
122+
return sb;
123+
}
124+
59125
/**
60126
* 获取"自定义通用SQL查询条件"
61127
*

src/main/java/app/myoss/cloud/mybatis/mapper/template/delete/impl/DeleteMapperTemplate.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,10 @@ public String deleteByCondition(TableInfo tableInfo, MappedStatement ms) {
231231
StringBuilder builder = new StringBuilder(2048);
232232
buildDeleteEntitySql(tableInfo, metaObject, builder);
233233
builder.append(tableInfo.getWhereConditionSql());
234+
String extendSql = getWhereExtend(ms);
235+
if (extendSql != null) {
236+
builder.insert(builder.length() - 8, extendSql);
237+
}
234238
String sql = builder.toString();
235239

236240
// 替换 sqlSource 对象
@@ -324,6 +328,10 @@ public String deleteByConditionAndUpdate(TableInfo tableInfo, MappedStatement ms
324328
}
325329
builder.append("</set>\n");
326330
builder.append(tableInfo.getWhereConditionWithParameterSql());
331+
StringBuilder extendSql = getWhereExtendCondition(ms);
332+
if (extendSql != null) {
333+
builder.insert(builder.length() - 8, extendSql);
334+
}
327335
String sql = builder.toString();
328336

329337
// 替换 sqlSource 对象

src/main/java/app/myoss/cloud/mybatis/mapper/template/select/impl/SelectIncludeLogicDeleteMapperTemplate.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ public String selectOneIncludeLogicDelete(TableInfo tableInfo, MappedStatement m
8080
builder.append("SELECT ").append(tableInfo.getSelectAllColumnsSql());
8181
builder.append(" FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
8282
builder.append(tableInfo.getWhereConditionIncludeLogicDeleteSql());
83+
String extendSql = getWhereExtend(ms);
84+
if (extendSql != null) {
85+
builder.insert(builder.length() - 8, extendSql);
86+
}
8387
String sql = builder.toString();
8488

8589
// 替换 sqlSource 对象
@@ -139,6 +143,10 @@ public String selectCountIncludeLogicDelete(TableInfo tableInfo, MappedStatement
139143
StringBuilder builder = new StringBuilder(2048);
140144
builder.append("SELECT COUNT(1) FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
141145
builder.append(tableInfo.getWhereConditionIncludeLogicDeleteSql());
146+
String extendSql = getWhereExtend(ms);
147+
if (extendSql != null) {
148+
builder.insert(builder.length() - 8, extendSql);
149+
}
142150
String sql = builder.toString();
143151

144152
// 替换 sqlSource 对象
@@ -185,6 +193,10 @@ public String selectCountIncludeLogicDelete2(TableInfo tableInfo, MappedStatemen
185193
if (extraConditionSql != null) {
186194
builder.insert(builder.length() - 8, extraConditionSql);
187195
}
196+
StringBuilder extendSql = getWhereExtendCondition(ms);
197+
if (extendSql != null) {
198+
builder.insert(builder.length() - 8, extendSql);
199+
}
188200
String sql = builder.toString();
189201

190202
// 替换 sqlSource 对象
@@ -234,6 +246,10 @@ public String selectPageIncludeLogicDelete(TableInfo tableInfo, MappedStatement
234246
builder.append("SELECT ").append(tableInfo.getSelectAllColumnsSql());
235247
builder.append(" FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
236248
builder.append(tableInfo.getWhereConditionWithParameterIncludeLogicDeleteSql());
249+
StringBuilder extendSql = getWhereExtendCondition(ms);
250+
if (extendSql != null) {
251+
builder.insert(builder.length() - 8, extendSql);
252+
}
237253
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
238254
builder.append("\n order by");
239255
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");
@@ -280,7 +296,7 @@ public String selectPageIncludeLogicDelete(TableInfo tableInfo, MappedStatement
280296
* @param ms sql语句节点信息,会将生成的sql语句替换掉原有的 {@link MappedStatement#sqlSource}
281297
* @return 生成的sql语句
282298
* @see SelectPageIncludeLogicDeleteMapper#selectPageIncludeLogicDelete2(Object,
283-
* Map, int, int, List)
299+
* java.util.Map, int, int, List)
284300
*/
285301
public String selectPageIncludeLogicDelete2(TableInfo tableInfo, MappedStatement ms) {
286302
MetaObject metaObject = SystemMetaObject.forObject(ms);
@@ -298,6 +314,10 @@ public String selectPageIncludeLogicDelete2(TableInfo tableInfo, MappedStatement
298314
if (extraConditionSql != null) {
299315
builder.insert(builder.length() - 8, extraConditionSql);
300316
}
317+
StringBuilder extendSql = getWhereExtendCondition(ms);
318+
if (extendSql != null) {
319+
builder.insert(builder.length() - 8, extendSql);
320+
}
301321
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
302322
builder.append("\n order by");
303323
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");

src/main/java/app/myoss/cloud/mybatis/mapper/template/select/impl/SelectMapperTemplate.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public String selectOne(TableInfo tableInfo, MappedStatement ms) {
8181
builder.append("SELECT ").append(tableInfo.getSelectAllColumnsSql());
8282
builder.append(" FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
8383
builder.append(tableInfo.getWhereConditionSql());
84+
String extendSql = getWhereExtend(ms);
85+
if (extendSql != null) {
86+
builder.insert(builder.length() - 8, extendSql);
87+
}
8488
String sql = builder.toString();
8589

8690
// 替换 sqlSource 对象
@@ -142,6 +146,10 @@ public String selectCount(TableInfo tableInfo, MappedStatement ms) {
142146
StringBuilder builder = new StringBuilder(2048);
143147
builder.append("SELECT COUNT(1) FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
144148
builder.append(tableInfo.getWhereConditionSql());
149+
String extendSql = getWhereExtend(ms);
150+
if (extendSql != null) {
151+
builder.insert(builder.length() - 8, extendSql);
152+
}
145153
String sql = builder.toString();
146154

147155
// 替换 sqlSource 对象
@@ -188,6 +196,10 @@ public String selectCount2(TableInfo tableInfo, MappedStatement ms) {
188196
if (extraConditionSql != null) {
189197
builder.insert(builder.length() - 8, extraConditionSql);
190198
}
199+
StringBuilder extendSql = getWhereExtendCondition(ms);
200+
if (extendSql != null) {
201+
builder.insert(builder.length() - 8, extendSql);
202+
}
191203
String sql = builder.toString();
192204

193205
// 替换 sqlSource 对象
@@ -237,6 +249,10 @@ public String selectPage(TableInfo tableInfo, MappedStatement ms) {
237249
builder.append("SELECT ").append(tableInfo.getSelectAllColumnsSql());
238250
builder.append(" FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
239251
builder.append(tableInfo.getWhereConditionWithParameterSql());
252+
StringBuilder extendSql = getWhereExtendCondition(ms);
253+
if (extendSql != null) {
254+
builder.insert(builder.length() - 8, extendSql);
255+
}
240256
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
241257
builder.append("\n order by");
242258
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");
@@ -300,6 +316,10 @@ public String selectPage2(TableInfo tableInfo, MappedStatement ms) {
300316
if (extraConditionSql != null) {
301317
builder.insert(builder.length() - 8, extraConditionSql);
302318
}
319+
StringBuilder extendSql = getWhereExtendCondition(ms);
320+
if (extendSql != null) {
321+
builder.insert(builder.length() - 8, extendSql);
322+
}
303323
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
304324
builder.append("\n order by");
305325
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");

src/main/java/app/myoss/cloud/mybatis/mapper/template/select/impl/SelectSortIncludeLogicDeleteMapperTemplate.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public String selectListWithSortIncludeLogicDelete(TableInfo tableInfo, MappedSt
8181
builder.append("SELECT ").append(tableInfo.getSelectAllColumnsSql());
8282
builder.append(" FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
8383
builder.append(tableInfo.getWhereConditionWithParameterIncludeLogicDeleteSql());
84+
StringBuilder extendSql = getWhereExtendCondition(ms);
85+
if (extendSql != null) {
86+
builder.insert(builder.length() - 8, extendSql);
87+
}
8488
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
8589
builder.append("\n order by");
8690
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");
@@ -142,6 +146,10 @@ public String selectListWithSortIncludeLogicDelete2(TableInfo tableInfo, MappedS
142146
if (extraConditionSql != null) {
143147
builder.insert(builder.length() - 8, extraConditionSql);
144148
}
149+
StringBuilder extendSql = getWhereExtendCondition(ms);
150+
if (extendSql != null) {
151+
builder.insert(builder.length() - 8, extendSql);
152+
}
145153
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
146154
builder.append("\n order by");
147155
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");

src/main/java/app/myoss/cloud/mybatis/mapper/template/select/impl/SelectSortMapperTemplate.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public String selectListWithSort(TableInfo tableInfo, MappedStatement ms) {
8181
builder.append("SELECT ").append(tableInfo.getSelectAllColumnsSql());
8282
builder.append(" FROM ").append(TableMetaObject.getTableName(tableInfo)).append("\n");
8383
builder.append(tableInfo.getWhereConditionWithParameterSql());
84+
StringBuilder extendSql = getWhereExtendCondition(ms);
85+
if (extendSql != null) {
86+
builder.insert(builder.length() - 8, extendSql);
87+
}
8488
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
8589
builder.append("\n order by");
8690
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");
@@ -142,6 +146,10 @@ public String selectListWithSort2(TableInfo tableInfo, MappedStatement ms) {
142146
if (extraConditionSql != null) {
143147
builder.insert(builder.length() - 8, extraConditionSql);
144148
}
149+
StringBuilder extendSql = getWhereExtendCondition(ms);
150+
if (extendSql != null) {
151+
builder.insert(builder.length() - 8, extendSql);
152+
}
145153
builder.append("\n<if test=\"orders != null and orders.size > 0\">");
146154
builder.append("\n order by");
147155
builder.append("\n <foreach collection=\"orders\" item=\"item\" separator=\",\">");

0 commit comments

Comments
 (0)