mybatisplus遇到此类错误是因为mapper.xml和mapper对应不上,常见的解决方法有:
1)检查xml文件里的namespace是否正确,它需要和mapper的java文件对应
2)没有扫描到mapper.xml文件,需要在application.yml里指定加载路径,例如:
mapper-locations: classpath:mapper/*.xml
3)没有扫描到mapper的java文件,需要在启动类上添加@MapperScan指定扫描路径
新手可能会犯该错误:一般的java类等一定要放在启动类同级或者下级目录,不然扫描不到这些类。
常见的错误说完了,接下来说说我个人的解决办法:
创建一个MybatisPlusConfigUitls的类,写入该方法:
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
//配置mapper.xml路径
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
// 配置globalConfig
GlobalConfig globalConfig = new GlobalConfig();
//下方new的是mybatis自动注入日期的类,我的因为无法自动加载该类,所以特意设定了
globalConfig.setMetaObjectHandler(new MyMetaObjecthandler()); // 设置元数据对象处理器为MyMetaObject
factoryBean.setGlobalConfig(globalConfig);
return factoryBean.getObject();
}
至此,应该可以解决了