Mybatis-Spring整合Spring

  

  因为 MyBatis 用 SqlSessionFactory 来创造 SqlSession
,SqlSessionFactoryBuilder 创建 SqlSessionFactory ,而以 Mybatis-Spring
中提供了累自 Spring 接口 FactoryBean 的 SqlSessionFactoryBean
类,它提供 getObject() 方法来赢得 SqlSessionFactory
。所以可以为此基于Java配置的法门安排 SqlSessionFactory 。

  MybatisDataConfig配置类配置了MyBatis的dataSource、sql语句xml配置文件路径、数据库类型包路径

 1 @Configuration
 2 public class MybatisDataConfig {
 3 
 4   private DataSource dataSource;
 5 
 6   @Autowired
 7   public MybatisDataConfig(DataSource dataSource) {
 8     this.dataSource = dataSource;
 9   }
10 
11   /**
12    * 必须指定名称 sqlSessionFactory.
13    */
14   @Bean("sqlSessionFactory")
15   public SqlSessionFactory getBean() throws Exception {
16     SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
17     factoryBean.setDataSource(dataSource);
18 
19     ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
20     factoryBean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
21     factoryBean.setTypeAliasesPackage("com.test.entity");
22     return factoryBean.getObject();
23   }
24 
25 }

  为了减小xml配置,Mybatis-Spring还提供了 MapperScannerConfigurer
类,它可以扫描映射类,自动创建 MapperFactoryBean
来吧dao注入给service,也就是说service可以一直通过@Autowired等办法,直接流入dao层接口实例,而dao层的接口不待外额外的布。

 1 /**
 2  * <p>MybatisScannerConfig 和 MybatisDataConfig 需要分开写.</p>
 3  * <p>而 MybatisScannerConfig 比 MybatisDataConfig 加载早.</p>
 4  * <p>所以要定义@AutoConfigureAfter.</p>
 5  * <p>否则 MybatisDataConfig 先加载会找不到 dataSource.</p>
 6  * @see MybatisDataConfig
 7  */
 8 @Configuration
 9 @AutoConfigureAfter(MybatisDataConfig.class)
10 public class MybatisScannerConfig {
11 
12   /**
13    * 基于Java配置sqlSessionFactory,扫描dao层.
14    * @return 配置实例
15    */
16   @Bean
17   public MapperScannerConfigurer getConfig() {
18     MapperScannerConfigurer configurer = new MapperScannerConfigurer();
19     configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
20     configurer.setBasePackage("com.test.dao");
21     return configurer;
22   }
23 }

 项目Demo:MiniJavaWeb

 

网站地图xml地图