Spring整合Mybatis抛出TypeNotPresentException,请求排查解决
MyBatis与Spring整合报错解决方案
1. 缺失MyBatis核心依赖
你的pom.xml仅引入了MyBatis与Spring的整合包mybatis-spring,但未添加MyBatis核心依赖,导致JVM无法找到org.apache.ibatis.session.SqlSessionFactory类。
需要在<dependencies>中加入MyBatis核心包:
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.15</version> <!-- 与mybatis-spring 3.0.2版本兼容 --> </dependency>
2. Spring版本与JDK版本不兼容
你使用的Spring 6.1.3要求最低JDK版本为17,但pom.xml中指定的编译版本是JDK 1.7,这会引发严重的兼容性问题,必须二选一调整:
- 方案A:升级JDK至17及以上,保留Spring 6.x和当前mybatis-spring版本
- 方案B:降级Spring到兼容JDK 1.7的5.3.x系列,同时匹配对应版本的mybatis-spring(如2.1.5)
方案B的核心依赖调整示例:
<!-- Spring 5.3.x 兼容JDK 1.7+ --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.3.30</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.30</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.3.30</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.30</version> </dependency> <!-- mybatis-spring 2.1.x 适配Spring 5.x --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.1.5</version> </dependency> <!-- MyBatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency>
3. 操作步骤
- 添加MyBatis核心依赖
- 调整Spring/JDK版本至兼容组合
- 执行
mvn clean install刷新依赖 - 重新运行测试代码
内容的提问来源于stack exchange,提问作者吴思正
相关产品推荐
相关产品推荐

