由于原来的项目是用mybatis开发,后续开发人员嫌太麻烦,直接加入mybatis-plus 但再启动时出现一些问题
主要就是出现
Not Found TableInfoCache 的异常 ,
网上翻寻了一下说是mybatis-plus 使用的
SqlSessionFactory 与 mybatis 使用的有所不同
下面就是找到自己项目的mybatisConfig 配置类 改为使用第一个sqlSession
@Bean(name = "SqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
String typeAliasesPackage = this.env.getProperty("mybatis.typeAliasesPackage");
String mapperLocations = this.env.getProperty("mybatis.mapperLocations");
String configLocation = this.env.getProperty("mybatis.configLocation");
// String typeAliasesPackage = env.getProperty("mybatis-plus.typeAliasesPackage");
// String mapperLocations = env.getProperty("mybatis-plus.mapperLocations");
// String configLocation = env.getProperty("mybatis-plus.configLocation");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); // mybatis-plus
// final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); //mybatis
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}
配置这时可以不用修改,但注意新写的代码也要符合以前的配置扫描规则
# MyBatis
mybatis:
# 搜索指定包别名
typeAliasesPackage: cn.sdui.**.domain,cn.sdui.**.pojo
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
然后运行,又出现新的问题
大致是说版本不兼容,有些方法找不到,这时候需要降低mybatis-plus 的版本,
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
这是原有的两个版本
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
直接把mybatis-plus 降到3.1.0 重新启动 ,调用mybatis-plus公用方法,成功
刚开始的时候网上看了很多说是把mybatis 的依赖全部替换成mybatis -plus 但是这样做是有一定的风险的。最后使用这种轻量修改完成整合。