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

Skip to content

Commit 959b6ea

Browse files
committed
集成到Spring
1 parent b938ae3 commit 959b6ea

File tree

2 files changed

+92
-7
lines changed

2 files changed

+92
-7
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.isea533.mybatis;
2+
3+
import com.isea533.mybatis.mapperhelper.MapperHelper;
4+
import org.apache.ibatis.builder.annotation.ProviderSqlSource;
5+
import org.apache.ibatis.mapping.MappedStatement;
6+
import org.mybatis.spring.SqlSessionTemplate;
7+
import org.springframework.beans.BeansException;
8+
import org.springframework.beans.factory.config.BeanPostProcessor;
9+
10+
import java.util.Collection;
11+
import java.util.Properties;
12+
13+
/**
14+
* @author liuzh
15+
*/
16+
public class MappperBeanPostProcessor implements BeanPostProcessor {
17+
18+
private final MapperHelper mapperHelper = new MapperHelper();
19+
20+
private boolean runed = false;
21+
22+
public void setProperties(Properties properties) {
23+
String UUID = properties.getProperty("UUID");
24+
if (UUID != null && UUID.length() > 0) {
25+
mapperHelper.setUUID(UUID);
26+
}
27+
String IDENTITY = properties.getProperty("IDENTITY");
28+
if (IDENTITY != null && IDENTITY.length() > 0) {
29+
mapperHelper.setIDENTITY(IDENTITY);
30+
}
31+
String seqFormat = properties.getProperty("seqFormat");
32+
if (seqFormat != null && seqFormat.length() > 0) {
33+
mapperHelper.setSeqFormat(seqFormat);
34+
}
35+
String ORDER = properties.getProperty("ORDER");
36+
if (ORDER != null && ORDER.length() > 0) {
37+
mapperHelper.setBEFORE(ORDER);
38+
}
39+
String cameHumpMap = properties.getProperty("cameHumpMap");
40+
if (cameHumpMap != null && cameHumpMap.length() > 0) {
41+
mapperHelper.setCameHumpMap(cameHumpMap);
42+
}
43+
int mapperCount = 0;
44+
String mapper = properties.getProperty("mappers");
45+
if (mapper != null && mapper.length() > 0) {
46+
String[] mappers = mapper.split(",");
47+
for (String mapperClass : mappers) {
48+
if (mapperClass.length() > 0) {
49+
mapperHelper.registerMapper(mapperClass);
50+
mapperCount++;
51+
}
52+
}
53+
}
54+
if (mapperCount == 0) {
55+
throw new RuntimeException("通用Mapper没有配置任何有效的通用接口!");
56+
}
57+
}
58+
59+
60+
@Override
61+
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
62+
return bean;
63+
}
64+
65+
@Override
66+
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
67+
if (!runed && bean instanceof SqlSessionTemplate) {
68+
SqlSessionTemplate sqlSessionTemplate = (SqlSessionTemplate)bean;
69+
Collection<MappedStatement> collection = sqlSessionTemplate.getConfiguration().getMappedStatements();
70+
for (Object object : collection) {
71+
if (object instanceof MappedStatement) {
72+
MappedStatement ms = (MappedStatement)object;
73+
if (mapperHelper.isMapperMethod(ms.getId())) {
74+
if (ms.getSqlSource() instanceof ProviderSqlSource) {
75+
mapperHelper.setSqlSource(ms);
76+
}
77+
}
78+
}
79+
}
80+
runed = true;
81+
}
82+
return bean;
83+
}
84+
}

src/main/resources/applicationContext.xml

+8-7
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,6 @@
4242
</value>
4343
</property>
4444
</bean>
45-
<bean class="com.isea533.mybatis.mapperhelper.MapperInterceptor">
46-
<property name="properties">
47-
<value>
48-
mappers=com.isea533.mybatis.mapperhelper.Mapper
49-
</value>
50-
</property>
51-
</bean>
5245
</array>
5346
</property>
5447
</bean>
@@ -80,4 +73,12 @@
8073
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
8174
<property name="dataSource" ref="dataSource"/>
8275
</bean>
76+
77+
<bean id="mapperHelper" class="com.isea533.mybatis.MappperBeanPostProcessor">
78+
<property name="properties">
79+
<value>
80+
mappers=com.isea533.mybatis.mapperhelper.Mapper
81+
</value>
82+
</property>
83+
</bean>
8384
</beans>

0 commit comments

Comments
 (0)