SpringBoot配置MyBatis遇到的问题

今天 在搭建一个项目的架构的时候出现了一个问题 ,总是提示我sqlSessionFactory找不到

报错如下 :(特意没用图片 方便搜索引擎找到)

Error handling failed (Error creating bean with name 'myBatisConfig' defined in file [G:\IdeaWorkSpace\ht1607\target\classes\com\ht\config\MyBatisConfig.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties': Initialization of bean failed; nested exception is java.lang.IllegalStateException: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@68a2af21 has not been refreshed yet)
  • 1

我的MyBatis的配置是这样的 :

@Configuration
public class MyBatisConfig {

    @Autowired
    private DataSource dataSource;

    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean()  throws IOException {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        //设置数据源
        sqlSessionFactoryBean.setDataSource(dataSource);
        //设置别名包
        sqlSessionFactoryBean.setTypeAliasesPackage("com.ht.pojo");

        //添加XML目录
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        //设置扫描xml文件
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
        sqlSessionFactoryBean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));
        return sqlSessionFactoryBean;

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

MyBatis包扫描的配置是这样的:

public class MapperConfig {

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        //设置sqlSession工厂
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        //设置mapper扫描包
        mapperScannerConfigurer.setBasePackage("com.ht.mapper");
        return mapperScannerConfigurer;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

问题解决如下 在SSM中: 
一般我们配置sqlSessionFactory是这样的 :

id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  • 1
  • 2

注意 前面是 sqlSessionFactory 后面是 SqlSessionFactoryBean

具体SqlSessionFactoryBean 的实现原理这里不解释了

那么在我的配置文件中 可这样修改

1。修改Mybatis的配置类 
@Bean 改为 @Bean(name = ‘sqlSessionFactory’) 
或者 
2。 修改MyBatis扫描配置类

  //设置sqlSession工厂
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
  • 1
  • 2

综上 解决了 我SpringBoot 集成MyBatis 出现的问题

但是 很奇怪的是 我搭建了三四个Boot项目了 前几个 我都是按照错误的方法写的 就没有报错 还是能找到sqlSessionFactory 这次出现的意外缺失让我丈二摸不到头脑 以后还是加上吧

之后 再开个专题把Boot 系统的讲解一遍吧 最近一直忙着数据可视化的东西

你可能感兴趣的:(SpringBoot)