SpringBoot配置MyBatis遇到的问题

来源:互联网 发布:手游源码 完整服务端 编辑:程序博客网 时间:2024/06/05 21:36

今天 在搭建一个项目的架构的时候出现了一个问题 ,总是提示我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的配置是这样的 :

@Configurationpublic 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是这样的 :

<bean 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 系统的讲解一遍吧 最近一直忙着数据可视化的东西

原创粉丝点击