SpringBoot整合Mybatis出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

本文解决在Springboot2.0.4整合Mybatis时遇到的Property'sqlSessionFactory'or'sqlSessionTemplate'areerequired异常。问题源于maven多项目继承中版本冲突,调整mybatis-spring-boot-starter版本后,项目正常启动。

在使用Springboot 2.0.4 整合Mybatis的时候出现异常Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required,然后各种找日志百度,但是一些方法都没有用:

有人说少了mybatis-spring-boot-starter jar包,然后我看的pom.xml文件,没有少

坑就出现在这里,因为我用的maven多项目继承,我的父项目里面有规定了版本是1.3.1,和我本地引入的版本冲突了,把我本地引入的1.3.2版本的删了,项目就正常启动了,希望可有帮助你们

使用 MyBatis 时,若出现提示 `Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required` 的配置错误,通常是因为 Spring 未能正确注入 MyBatis 所需的核心组件。以下是解决该问题的多种方式: --- ### 通过继承 `SqlSessionDaoSupport` 注入 `SqlSessionFactory` 在 DAO 层可以通过继承 `SqlSessionDaoSupport` 并使用 `@Resource` 注解注入 `SqlSessionFactory`,以确保 MyBatis 的会话工厂正确初始化。该方式适用于基于 DAO 模式的项目结构: ```java public class CommonDao extends SqlSessionDaoSupport { @Resource public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { super.setSqlSessionFactory(sqlSessionFactory); } } ``` 业务 DAO 类可继承该基类以获得对 `SqlSessionTemplate` 的访问能力[^3]。 --- ### 显式配置 `SqlSessionTemplate` Bean 在 Spring 配置类中显式定义 `SqlSessionTemplate` Bean 是一种更推荐的方式。该 Bean 是 MyBatis-Spring 提供的核心组件,具备线程安全性事务管理能力,确保 `SqlSession` 的正确使用: ```java @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } ``` 该配置确保了 `SqlSessionTemplate` 能够基于 `SqlSessionFactory` 正确初始化,并在整个 Spring 容器中可用[^1]。 --- ### 排除 `DataSourceAutoConfiguration` 避免冲突 在某些情况下,Spring Boot 自动配置的 `DataSourceAutoConfiguration` 可能与 MyBatis 的配置冲突,导致 `SqlSessionFactory` 或 `SqlSessionTemplate` 无法正确注入。此时可以通过在 `@SpringBootApplication` 注解中排除该自动配置类: ```java @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 此方法可避免因自动配置冲突导致的异常[^2]。 --- ### 检查依赖版本兼容性 若使用的是 Spring Boot 3.x,需注意 `mybatis-spring-boot-starter` 的版本兼容性问题。目前尚未正式发布的 3.x 版本适配 Spring Boot 3,需手动配置远程仓库并引入快照版本: ```xml <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.0-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>ossrh</id> <name>OSS Snapshot repository</name> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> ``` 此方式可解决 Spring Boot 3 与 MyBatis 之间因版本不兼容导致的配置问题。 --- ### 多数据源场景下的配置 在多数据源场景中,需要为每个数据源分别配置 `SqlSessionFactory` `SqlSessionTemplate`,并通过 `@Qualifier` 注解区分不同的模板实例: ```java @Bean @Primary public SqlSessionTemplate primarySqlSessionTemplate( @Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean public SqlSessionTemplate secondarySqlSessionTemplate( @Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } ``` 这种配置方式确保每个数据源拥有独立的会话模板,避免了不同数据源之间的干扰。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值