zoukankan      html  css  js  c++  java
  • 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 }

     项目DemoMiniJavaWeb

  • 相关阅读:
    上周热点回顾(12.1312.19)
    上周热点回顾(12.612.12)
    上周热点回顾(11.1511.21)
    上周热点回顾(11.2211.28)
    上周热点回顾(11.2912.5)
    [转]ITIL知识体系简介
    [书目20211113]Python自动化测试入门与进阶实战
    [转]敏捷宣言的内容及准则
    [书目20211212]IT运维之道
    python做量化交易干货分享
  • 原文地址:https://www.cnblogs.com/bigshark/p/8016846.html
Copyright © 2011-2022 走看看