update > optimize MybatisConfigurer

master
lihengming 8 years ago
parent d5727db44e
commit 414e0f9776
  1. 37
      src/main/java/com/company/project/configurer/MybatisConfigurer.java

@ -4,8 +4,10 @@ import com.github.pagehelper.PageHelper;
import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver;
@ -22,52 +24,45 @@ import static com.company.project.core.ProjectConstant.*;
*/ */
@Configuration @Configuration
public class MybatisConfigurer { public class MybatisConfigurer {
@Resource
private DataSource dataSource;
@Bean @Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception { public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
bean.setDataSource(dataSource); factory.setDataSource(dataSource);
bean.setTypeAliasesPackage(MODEL_PACKAGE); factory.setTypeAliasesPackage(MODEL_PACKAGE);
//分页插件 //配置分页插件,详情请查阅官方文档
PageHelper pageHelper = new PageHelper(); PageHelper pageHelper = new PageHelper();
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("reasonable", "true"); properties.setProperty("pageSizeZero", "true");//分页尺寸为0时查询所有纪录不再执行分页
properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("reasonable", "true");//页码<=0 查询第一页,页码>=总页数查询最后一页
properties.setProperty("returnPageInfo", "check"); properties.setProperty("supportMethodsArguments", "true");//支持通过 Mapper 接口参数来传递分页参数
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties); pageHelper.setProperties(properties);
//添加插件 //添加插件
bean.setPlugins(new Interceptor[]{pageHelper}); factory.setPlugins(new Interceptor[]{pageHelper});
//添加XML目录 //添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); factory.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
return bean.getObject(); return factory.getObject();
} }
@Configuration
@AutoConfigureAfter(MybatisConfigurer.class)
public static class MyBatisMapperScannerConfigurer {
@Bean @Bean
public MapperScannerConfigurer mapperScannerConfigurer() { public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean"); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage(MAPPER_PACKAGE); mapperScannerConfigurer.setBasePackage(MAPPER_PACKAGE);
//配置通用mappers
//配置通用Mapper,详情请查阅官方文档
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("mappers", MAPPER_INTERFACE_REFERENCE); properties.setProperty("mappers", MAPPER_INTERFACE_REFERENCE);
properties.setProperty("notEmpty", "false"); properties.setProperty("notEmpty", "false");//insert、update是否判断字符串类型!='' 即 test="str != null"表达式内是否追加 and str != ''
properties.setProperty("IDENTITY", "MYSQL"); properties.setProperty("IDENTITY", "MYSQL");
mapperScannerConfigurer.setProperties(properties); mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer; return mapperScannerConfigurer;
} }
}
} }

Loading…
Cancel
Save