Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ecad571

Browse files
committed
兼容MyBatis3.3.0版本
1 parent 7130bbf commit ecad571

File tree

3 files changed

+20
-36
lines changed

3 files changed

+20
-36
lines changed

src/main/java/com/github/abel533/entity/BaseProvider.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
package com.github.abel533.entity;
2626

2727
import com.github.abel533.mapperhelper.EntityHelper;
28-
import com.github.abel533.mapperhelper.MapperTemplate;
2928
import org.apache.ibatis.jdbc.SQL;
3029
import org.apache.ibatis.reflection.MetaObject;
30+
import org.apache.ibatis.reflection.SystemMetaObject;
3131

3232
import java.util.List;
3333
import java.util.Map;
@@ -111,7 +111,7 @@ protected MetaObject getExample(Map<String, Object> params) {
111111
return null;
112112
}
113113
//根据Example的结构,通过判断是否包含某些属性来判断条件是否为合法的example类型
114-
MetaObject example = MapperTemplate.forObject(result);
114+
MetaObject example = SystemMetaObject.forObject(result);
115115
if (example.hasGetter("orderByClause")
116116
&& example.hasGetter("oredCriteria")
117117
&& example.hasGetter("distinct")) {
@@ -169,7 +169,7 @@ protected void applyWhere(SQL sql, MetaObject example) {
169169
List<?> oredCriteria = (List<?>) example.getValue("oredCriteria");
170170
boolean firstCriteria = true;
171171
for (int i = 0; i < oredCriteria.size(); i++) {
172-
MetaObject criteria = MapperTemplate.forObject(oredCriteria.get(i));
172+
MetaObject criteria = SystemMetaObject.forObject(oredCriteria.get(i));
173173
List<?> criterions = (List<?>) criteria.getValue("criteria");
174174
if (criterions.size() > 0) {
175175
if (firstCriteria) {
@@ -181,7 +181,7 @@ protected void applyWhere(SQL sql, MetaObject example) {
181181
sb.append('(');
182182
boolean firstCriterion = true;
183183
for (int j = 0; j < criterions.size(); j++) {
184-
MetaObject criterion = MapperTemplate.forObject(criterions.get(j));
184+
MetaObject criterion = SystemMetaObject.forObject(criterions.get(j));
185185
if (firstCriterion) {
186186
firstCriterion = false;
187187
} else {

src/main/java/com/github/abel533/entity/CommonProvider.java

+12-12
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
package com.github.abel533.entity;
2626

2727
import com.github.abel533.mapperhelper.EntityHelper;
28-
import com.github.abel533.mapperhelper.MapperTemplate;
2928
import org.apache.ibatis.jdbc.SQL;
3029
import org.apache.ibatis.reflection.MetaObject;
30+
import org.apache.ibatis.reflection.SystemMetaObject;
3131

3232
import java.util.Map;
3333

@@ -51,7 +51,7 @@ public String selectOne(final Map<String, Object> params) {
5151
SELECT(EntityHelper.getAllColumns(entityClass));
5252
FROM(entityTable.getName());
5353
if (entity != null) {
54-
final MetaObject metaObject = MapperTemplate.forObject(entity);
54+
final MetaObject metaObject = SystemMetaObject.forObject(entity);
5555
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
5656
Object value = metaObject.getValue(column.getProperty());
5757
if (value == null) {
@@ -82,7 +82,7 @@ public String select(final Map<String, Object> params) {
8282
SELECT(EntityHelper.getAllColumns(entityClass));
8383
FROM(entityTable.getName());
8484
if (entity != null) {
85-
final MetaObject metaObject = MapperTemplate.forObject(entity);
85+
final MetaObject metaObject = SystemMetaObject.forObject(entity);
8686
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
8787
Object value = metaObject.getValue(column.getProperty());
8888
if (value == null) {
@@ -123,7 +123,7 @@ public String count(final Map<String, Object> params) {
123123
SELECT("count(*)");
124124
FROM(entityTable.getName());
125125
if (entity != null) {
126-
MetaObject metaObject = MapperTemplate.forObject(entity);
126+
MetaObject metaObject = SystemMetaObject.forObject(entity);
127127
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
128128
Object value = metaObject.getValue(column.getProperty());
129129
if (value == null) {
@@ -158,7 +158,7 @@ public String selectByPrimaryKey(final Map<String, Object> params) {
158158
notNullKeyProperty(column.getProperty(), entity);
159159
WHERE(column.getColumn() + "=#{key}");
160160
} else {
161-
applyWherePk(this, MapperTemplate.forObject(entity), entityTable.getEntityClassPKColumns(), "key");
161+
applyWherePk(this, SystemMetaObject.forObject(entity), entityTable.getEntityClassPKColumns(), "key");
162162
}
163163
}}.toString();
164164
}
@@ -191,7 +191,7 @@ public String insertSelective(final Map<String, Object> params) {
191191
Object entity = getEntity(params);
192192
Class<?> entityClass = getEntityClass(params);
193193
EntityHelper.EntityTable entityTable = EntityHelper.getEntityTable(entityClass);
194-
MetaObject metaObject = MapperTemplate.forObject(entity);
194+
MetaObject metaObject = SystemMetaObject.forObject(entity);
195195
INSERT_INTO(entityTable.getName());
196196
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
197197
Object value = metaObject.getValue(column.getProperty());
@@ -213,7 +213,7 @@ public String delete(final Map<String, Object> params) {
213213
Object entity = getEntity(params);
214214
Class<?> entityClass = getEntityClass(params);
215215
EntityHelper.EntityTable entityTable = EntityHelper.getEntityTable(entityClass);
216-
MetaObject metaObject = MapperTemplate.forObject(entity);
216+
MetaObject metaObject = SystemMetaObject.forObject(entity);
217217
DELETE_FROM(entityTable.getName());
218218
boolean hasValue = false;
219219
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
@@ -253,7 +253,7 @@ public String deleteByPrimaryKey(final Map<String, Object> params) {
253253
notNullKeyProperty(column.getProperty(), entity);
254254
WHERE(column.getColumn() + "=#{key}");
255255
} else {
256-
applyWherePk(this, MapperTemplate.forObject(entity), entityTable.getEntityClassPKColumns(), "key");
256+
applyWherePk(this, SystemMetaObject.forObject(entity), entityTable.getEntityClassPKColumns(), "key");
257257
}
258258
}}.toString();
259259
}
@@ -269,7 +269,7 @@ public String updateByPrimaryKey(final Map<String, Object> params) {
269269
Object entity = getEntity(params);
270270
Class<?> entityClass = getEntityClass(params);
271271
EntityHelper.EntityTable entityTable = EntityHelper.getEntityTable(entityClass);
272-
MetaObject metaObject = MapperTemplate.forObject(entity);
272+
MetaObject metaObject = SystemMetaObject.forObject(entity);
273273
UPDATE(entityTable.getName());
274274
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
275275
//更新不是ID的字段,因为根据主键查询的...更新后还是一样。
@@ -292,7 +292,7 @@ public String updateByPrimaryKeySelective(final Map<String, Object> params) {
292292
Object entity = getEntity(params);
293293
Class<?> entityClass = getEntityClass(params);
294294
EntityHelper.EntityTable entityTable = EntityHelper.getEntityTable(entityClass);
295-
MetaObject metaObject = MapperTemplate.forObject(entity);
295+
MetaObject metaObject = SystemMetaObject.forObject(entity);
296296
UPDATE(entityTable.getName());
297297
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
298298
Object value = metaObject.getValue(column.getProperty());
@@ -344,7 +344,7 @@ public String updateByExampleSelective(final Map<String, Object> params) {
344344
MetaObject example = getExample(params);
345345
Class<?> entityClass = getEntityClass(params);
346346
EntityHelper.EntityTable entityTable = EntityHelper.getEntityTable(entityClass);
347-
MetaObject metaObject = MapperTemplate.forObject(entity);
347+
MetaObject metaObject = SystemMetaObject.forObject(entity);
348348
UPDATE(entityTable.getName());
349349
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
350350
Object value = metaObject.getValue(column.getProperty());
@@ -363,7 +363,7 @@ public String updateByExample(final Map<String, Object> params) {
363363
MetaObject example = getExample(params);
364364
Class<?> entityClass = getEntityClass(params);
365365
EntityHelper.EntityTable entityTable = EntityHelper.getEntityTable(entityClass);
366-
MetaObject metaObject = MapperTemplate.forObject(entity);
366+
MetaObject metaObject = SystemMetaObject.forObject(entity);
367367
UPDATE(entityTable.getName());
368368
for (EntityHelper.EntityColumn column : entityTable.getEntityClassColumns()) {
369369
//更新不是ID的字段,因为根据主键查询的...更新后还是一样。

src/main/java/com/github/abel533/mapperhelper/MapperTemplate.java

+4-20
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@
3030
import org.apache.ibatis.executor.keygen.SelectKeyGenerator;
3131
import org.apache.ibatis.mapping.*;
3232
import org.apache.ibatis.reflection.MetaObject;
33-
import org.apache.ibatis.reflection.factory.DefaultObjectFactory;
34-
import org.apache.ibatis.reflection.factory.ObjectFactory;
35-
import org.apache.ibatis.reflection.wrapper.DefaultObjectWrapperFactory;
36-
import org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
33+
import org.apache.ibatis.reflection.SystemMetaObject;
3734
import org.apache.ibatis.scripting.defaults.RawSqlSource;
3835
import org.apache.ibatis.scripting.xmltags.*;
3936
import org.apache.ibatis.session.Configuration;
@@ -86,19 +83,6 @@ public boolean getBEFORE() {
8683
return mapperHelper.getBEFORE();
8784
}
8885

89-
private static final ObjectFactory DEFAULT_OBJECT_FACTORY = new DefaultObjectFactory();
90-
private static final ObjectWrapperFactory DEFAULT_OBJECT_WRAPPER_FACTORY = new DefaultObjectWrapperFactory();
91-
92-
/**
93-
* 反射对象,增加对低版本Mybatis的支持
94-
*
95-
* @param object 反射对象
96-
* @return
97-
*/
98-
public static MetaObject forObject(Object object) {
99-
return MetaObject.forObject(object, DEFAULT_OBJECT_FACTORY, DEFAULT_OBJECT_WRAPPER_FACTORY);
100-
}
101-
10286
/**
10387
* 是否支持该通用方法
10488
*
@@ -122,7 +106,7 @@ public boolean supportMethod(String msId) {
122106
*/
123107
protected void setResultType(MappedStatement ms, Class<?> entityClass) {
124108
ResultMap resultMap = ms.getResultMaps().get(0);
125-
MetaObject metaObject = forObject(resultMap);
109+
MetaObject metaObject = SystemMetaObject.forObject(resultMap);
126110
metaObject.setValue("type", entityClass);
127111
}
128112

@@ -133,7 +117,7 @@ protected void setResultType(MappedStatement ms, Class<?> entityClass) {
133117
* @param sqlSource
134118
*/
135119
protected void setSqlSource(MappedStatement ms, SqlSource sqlSource) {
136-
MetaObject msObject = forObject(ms);
120+
MetaObject msObject = SystemMetaObject.forObject(ms);
137121
msObject.setValue("sqlSource", sqlSource);
138122
}
139123

@@ -451,7 +435,7 @@ protected void newSelectKeyMappedStatement(MappedStatement ms, EntityHelper.Enti
451435
}
452436
//keyGenerator
453437
try {
454-
MetaObject msObject = forObject(ms);
438+
MetaObject msObject = SystemMetaObject.forObject(ms);
455439
msObject.setValue("keyGenerator", keyGenerator);
456440
msObject.setValue("keyProperties", column.getTable().getKeyProperties());
457441
msObject.setValue("keyColumns", column.getTable().getKeyColumns());

0 commit comments

Comments
 (0)