20
20
public class SqlMapper {
21
21
private final MSUtils msUtils ;
22
22
private final SqlSession sqlSession ;
23
+ private boolean cached ;
23
24
25
+ /**
26
+ * 构造方法,默认缓存MappedStatement
27
+ *
28
+ * <br>当通过前台实现执行任意SQL时,建议关闭缓存,否则每一个SQL缓存一次,最终的缓存数量会很大
29
+ * <br>如果是业务代码中拼的sql,建议缓存提高效率
30
+ *
31
+ * @param sqlSession
32
+ */
24
33
public SqlMapper (SqlSession sqlSession ) {
34
+ this (sqlSession , true );
35
+ }
36
+
37
+ /**
38
+ * 构造方法,可以控制是否缓存MappedStatement
39
+ *
40
+ * @param sqlSession
41
+ * @param cached 是否缓存MappedStatement
42
+ */
43
+ public SqlMapper (SqlSession sqlSession , boolean cached ) {
25
44
this .sqlSession = sqlSession ;
45
+ this .cached = cached ;
26
46
this .msUtils = new MSUtils (sqlSession .getConfiguration ());
27
47
}
28
48
49
+ public void setCached (boolean cached ) {
50
+ this .cached = cached ;
51
+ }
52
+
29
53
/**
30
54
* 获取List中最多只有一个的数据
31
55
*
32
56
* @param list List结果
33
- * @param <T> 泛型类型
57
+ * @param <T> 泛型类型
34
58
* @return
35
59
*/
36
60
private <T > T getOne (List <T > list ) {
@@ -57,7 +81,7 @@ public Map<String, Object> selectOne(String sql) {
57
81
/**
58
82
* 查询返回一个结果,多个结果时抛出异常
59
83
*
60
- * @param sql 执行的sql
84
+ * @param sql 执行的sql
61
85
* @param value 参数
62
86
* @return
63
87
*/
@@ -69,9 +93,9 @@ public Map<String, Object> selectOne(String sql, Object value) {
69
93
/**
70
94
* 查询返回一个结果,多个结果时抛出异常
71
95
*
72
- * @param sql 执行的sql
96
+ * @param sql 执行的sql
73
97
* @param resultType 返回的结果类型
74
- * @param <T> 泛型类型
98
+ * @param <T> 泛型类型
75
99
* @return
76
100
*/
77
101
public <T > T selectOne (String sql , Class <T > resultType ) {
@@ -82,10 +106,10 @@ public <T> T selectOne(String sql, Class<T> resultType) {
82
106
/**
83
107
* 查询返回一个结果,多个结果时抛出异常
84
108
*
85
- * @param sql 执行的sql
86
- * @param value 参数
109
+ * @param sql 执行的sql
110
+ * @param value 参数
87
111
* @param resultType 返回的结果类型
88
- * @param <T> 泛型类型
112
+ * @param <T> 泛型类型
89
113
* @return
90
114
*/
91
115
public <T > T selectOne (String sql , Object value , Class <T > resultType ) {
@@ -107,7 +131,7 @@ public List<Map<String, Object>> selectList(String sql) {
107
131
/**
108
132
* 查询返回List<Map<String, Object>>
109
133
*
110
- * @param sql 执行的sql
134
+ * @param sql 执行的sql
111
135
* @param value 参数
112
136
* @return
113
137
*/
@@ -120,9 +144,9 @@ public List<Map<String, Object>> selectList(String sql, Object value) {
120
144
/**
121
145
* 查询返回指定的结果类型
122
146
*
123
- * @param sql 执行的sql
147
+ * @param sql 执行的sql
124
148
* @param resultType 返回的结果类型
125
- * @param <T> 泛型类型
149
+ * @param <T> 泛型类型
126
150
* @return
127
151
*/
128
152
public <T > List <T > selectList (String sql , Class <T > resultType ) {
@@ -138,10 +162,10 @@ public <T> List<T> selectList(String sql, Class<T> resultType) {
138
162
/**
139
163
* 查询返回指定的结果类型
140
164
*
141
- * @param sql 执行的sql
142
- * @param value 参数
165
+ * @param sql 执行的sql
166
+ * @param value 参数
143
167
* @param resultType 返回的结果类型
144
- * @param <T> 泛型类型
168
+ * @param <T> 泛型类型
145
169
* @return
146
170
*/
147
171
public <T > List <T > selectList (String sql , Object value , Class <T > resultType ) {
@@ -169,7 +193,7 @@ public int insert(String sql) {
169
193
/**
170
194
* 插入数据
171
195
*
172
- * @param sql 执行的sql
196
+ * @param sql 执行的sql
173
197
* @param value 参数
174
198
* @return
175
199
*/
@@ -193,7 +217,7 @@ public int update(String sql) {
193
217
/**
194
218
* 更新数据
195
219
*
196
- * @param sql 执行的sql
220
+ * @param sql 执行的sql
197
221
* @param value 参数
198
222
* @return
199
223
*/
@@ -216,8 +240,8 @@ public int delete(String sql) {
216
240
217
241
/**
218
242
* 删除数据
219
- *
220
- * @param sql 执行的sql
243
+ *
244
+ * @param sql 执行的sql
221
245
* @param value 参数
222
246
* @return
223
247
*/
@@ -263,7 +287,7 @@ private boolean hasMappedStatement(String msId) {
263
287
* 创建一个查询的MS
264
288
*
265
289
* @param msId
266
- * @param sqlSource 执行的sqlSource
290
+ * @param sqlSource 执行的sqlSource
267
291
* @param resultType 返回的结果类型
268
292
*/
269
293
private void newSelectMappedStatement (String msId , SqlSource sqlSource , final Class <?> resultType ) {
@@ -275,14 +299,16 @@ private void newSelectMappedStatement(String msId, SqlSource sqlSource, final Cl
275
299
})
276
300
.build ();
277
301
//缓存
278
- configuration .addMappedStatement (ms );
302
+ if (cached ) {
303
+ configuration .addMappedStatement (ms );
304
+ }
279
305
}
280
306
281
307
/**
282
308
* 创建一个简单的MS
283
309
*
284
310
* @param msId
285
- * @param sqlSource 执行的sqlSource
311
+ * @param sqlSource 执行的sqlSource
286
312
* @param sqlCommandType 执行的sqlCommandType
287
313
*/
288
314
private void newUpdateMappedStatement (String msId , SqlSource sqlSource , SqlCommandType sqlCommandType ) {
@@ -294,7 +320,9 @@ private void newUpdateMappedStatement(String msId, SqlSource sqlSource, SqlComma
294
320
})
295
321
.build ();
296
322
//缓存
297
- configuration .addMappedStatement (ms );
323
+ if (cached ) {
324
+ configuration .addMappedStatement (ms );
325
+ }
298
326
}
299
327
300
328
private String select (String sql ) {
0 commit comments