Skip to content

Commit 462a0ff

Browse files
committed
3.2.2-SNAPSHOT:
和Spring集成时,允许通过`markerInterface`属性配置通用接口(注意该属性的原有作用不变),想要让该接口自动注册,该接口就需要继承`tk.mybatis.mapper.common.Marker`接口,`Mapper<T>`默认继承该接口,所以如果自己的接口是继承`Mapper<T>`的,不需要再继承。 解决注册默认接口时存在的bug。
1 parent 31616f8 commit 462a0ff

File tree

7 files changed

+51
-27
lines changed

7 files changed

+51
-27
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,12 @@ http://repo1.maven.org/maven2/javax/persistence/persistence-api/1.0/
108108

109109
##Maven坐标以及下载地址
110110

111-
###最新版本3.2.1 - 2015-09-02
111+
###最新版本3.2.2 - 2015-09-06
112+
113+
* 和Spring集成时,允许通过`markerInterface`属性配置通用接口(注意该属性的原有作用不变),想要让该接口自动注册,该接口就需要继承`tk.mybatis.mapper.common.Marker`接口,`Mapper<T>`默认继承该接口,所以如果自己的接口是继承`Mapper<T>`的,不需要再继承。
114+
* 解决注册默认接口时存在的bug
115+
116+
###3.2.1 - 2015-09-02
112117

113118
* 解决spring集成中可能出现definition.getBeanClassName()空指针异常bug[#49](http://git.oschina.net/free/Mapper/issues/49)
114119
* 关于3.2.x版本,请仔细看3.2.0的更新日志,最新版本的文档也是针对3.2.x版本的

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>tk.mybatis</groupId>
66
<artifactId>mapper</artifactId>
7-
<version>3.2.1</version>
7+
<version>3.2.2-SNAPSHOT</version>
88
<packaging>jar</packaging>
99

1010
<name>mapper</name>

src/main/java/tk/mybatis/mapper/common/Mapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
public interface Mapper<T> extends
3838
BaseMapper<T>,
3939
ExampleMapper<T>,
40-
RowBoundsMapper<T> {
40+
RowBoundsMapper<T>,
41+
Marker {
4142

4243
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package tk.mybatis.mapper.common;
2+
3+
/**
4+
* 标记接口,继承该接口的接口,在MapperScannerConfigurer#setMarkerInterface时,会自动注册到通用Mapper
5+
*
6+
* @author liuzh
7+
* @since 2015-09-06 21:44
8+
*/
9+
public interface Marker {
10+
11+
}

src/main/java/tk/mybatis/mapper/mapperhelper/MapperHelper.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -260,18 +260,25 @@ public void setProperties(Properties properties) {
260260
if (properties != null) {
261261
mapper = properties.getProperty("mappers");
262262
}
263-
if(StringUtil.isEmpty(mapper)){
264-
//默认包名
265-
mapper = "tk.mybatis.mapper.common.Mapper";
266-
}
267-
String[] mappers = mapper.split(",");
268-
for (String mapperClass : mappers) {
269-
if (mapperClass.length() > 0) {
270-
registerMapper(mapperClass);
263+
if (StringUtil.isNotEmpty(mapper)) {
264+
String[] mappers = mapper.split(",");
265+
for (String mapperClass : mappers) {
266+
if (mapperClass.length() > 0) {
267+
registerMapper(mapperClass);
268+
}
271269
}
272270
}
273271
}
274272

273+
/**
274+
* 如果当前注册的接口为空,自动注册默认接口
275+
*/
276+
public void ifEmptyRegisterDefaultInterface() {
277+
if (registerClass.size() == 0) {
278+
registerMapper("tk.mybatis.mapper.common.Mapper");
279+
}
280+
}
281+
275282
/**
276283
* 配置完成后,执行下面的操作
277284
* <br>处理configuration中全部的MappedStatement

src/main/java/tk/mybatis/spring/mapper/MapperScannerConfigurer.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,32 @@
33
import org.springframework.beans.factory.config.BeanDefinition;
44
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
55
import org.springframework.beans.factory.support.GenericBeanDefinition;
6-
import tk.mybatis.mapper.entity.Config;
6+
import tk.mybatis.mapper.common.Marker;
77
import tk.mybatis.mapper.mapperhelper.MapperHelper;
88
import tk.mybatis.mapper.util.StringUtil;
99

1010
import java.util.Properties;
1111

1212

1313
public class MapperScannerConfigurer extends org.mybatis.spring.mapper.MapperScannerConfigurer {
14-
private MapperHelper mapperHelper;
14+
private MapperHelper mapperHelper = new MapperHelper();
15+
16+
public void setMarkerInterface(Class<?> superClass) {
17+
super.setMarkerInterface(superClass);
18+
if (Marker.class.isAssignableFrom(superClass)) {
19+
mapperHelper.registerMapper(superClass);
20+
}
21+
}
1522

1623
/**
1724
* 属性注入
1825
*
1926
* @param properties
2027
*/
2128
public void setProperties(Properties properties) {
22-
mapperHelper = new MapperHelper();
2329
mapperHelper.setProperties(properties);
2430
}
2531

26-
/**
27-
* Config方式注入
28-
*
29-
* @param config
30-
*/
31-
public void setConfig(Config config) {
32-
mapperHelper = new MapperHelper();
33-
mapperHelper.setConfig(config);
34-
}
35-
3632
/**
3733
* 注册完成后,对MapperFactoryBean的类进行特殊处理
3834
*
@@ -41,9 +37,8 @@ public void setConfig(Config config) {
4137
@Override
4238
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) {
4339
super.postProcessBeanDefinitionRegistry(registry);
44-
if (mapperHelper == null) {
45-
mapperHelper = new MapperHelper();
46-
}
40+
//如果没有注册过接口,就注册默认的Mapper接口
41+
this.mapperHelper.ifEmptyRegisterDefaultInterface();
4742
String[] names = registry.getBeanDefinitionNames();
4843
GenericBeanDefinition definition;
4944
for (String name : names) {

wiki/Changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
#更新日志
22

3+
##3.2.1 - 2015-09-02
4+
5+
* 解决spring集成中可能出现definition.getBeanClassName()空指针异常bug[#49](http://git.oschina.net/free/Mapper/issues/49)
6+
* 关于3.2.x版本,请仔细看3.2.0的更新日志,最新版本的文档也是针对3.2.x版本的
7+
38
##3.2.0 - 2015-09-02
49

510
* 移除`MapperInterceptor`拦截器,以后不能在通过拦截器配置

0 commit comments

Comments
 (0)