启动项目时报错
之前以为是jar包冲突,但是细看不是,并没有两个冲突的包。从analysis也看不出有多个版本,如果进行排除会直接报错
image.png
重复的情况是下文https://my.oschina.net/manlu/blog/3212669
我的这种情况主要还是没有方法,netty-common.4.1.64.Final版本里的这个类里面没有。找到这个包发现果然是没有,那就是版本问题了。在dependencymanagement里面指定依赖版本可以解决这个问题。但是无法解释为什么会依赖到错误的版本。
记一次mybatis集成spring
原生集成
可能会有各种版本问题。可能会自己集成mybatis、mybatis-spring、spring-tx
最直观的现象是缺少类或者方法
从前面的启动配置我们知道了,Mybatis的api入口是sqlSessionFactory。Mybatis提供SqlSessionDaoSupport抽象类来方便获取sqlSession。
继承SqlSessionDaoSupport可以获得getSqlSession方法来得到sqlSession。然后通过sqlSession的api最终调用到mapper里配置的sql程序。
MyBatisSpringConfig
通过Java方式在Spring框架中注册MyBatis的核心组件Bean,并且配置声明式事务管理。
在Spring中注册MyBatis的核心组件Bean:SqlSessionFactory,SqlSession,以及Spring的事务管理器。另外,在构建SqlSessionFactory时还可以注册MyBatis的xml映射器。
注册MyBatis接口映射器
通过MyBatis-Spring-Boot-Starter集成
默认情况下,插件MyBatis-Spring-Boot-Starter将进行如下配置:
自动检查Spring Boot的数据源配置并构建DataSource对象
通过SqlSessionFactoryBean使用数据源构建并注册SqlSessionFactory对象
从SqlSessionFactory中创建并注册一个SqlSessionTemplate实例,其实就是构建一个SqlSession对象
自动扫描接口映射器,并将这些映射器与SqlSessionTemplate实例进行关联,同时将它们注册到Spring容器中
导致这个问题可能有很多种
Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
- 需要为项目添加 @MapperScan("top.jionjion.core.mapper.*") 指明所有的 Mapper 文件信息, Mybatis 会自动为其添加 sqlSessionFactory , 否则就会报错
# SpringBoot3整合MyBatis报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
Spring下的Mybatis配置
Mybatis-plus与Mybatis依赖冲突问题解决
Spring的事务管理与MyBatis事物管理结合的原理
网友评论