1、报错场景:
基于若依框架进行二次开发,在使用mybatis-plus的CRUD 接口时报错:
Invalid bound statement (not found): com.ruoyi.....Mapper.insert
2、原因:
Mapper.insert使用的是mybatis-plus的insert的方法,但是若依项目使用的是mybatis
项目中如果同时使用了mybatis和mybatis-plus,尝试使用正常写sql的是没有问题的,但是在调用BaseMapper的公用方法时就会发生报错,无法找到sql
3、解决办法:
配置sqlSessionFactory数据源,找到MyBatisConfig将原有的
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
替换成
MybatisSqlSessionFactoryBean sessionFactory=new MybatisSqlSessionFactoryBean();
示例如下:
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
{
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
String mapperLocations = env.getProperty("mybatis.mapperLocations");
String configLocation = env.getProperty("mybatis.configLocation");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
// final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
MybatisSqlSessionFactoryBean sessionFactory=new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}