遇到错误问题
1.如果是yml文件配置,首先第一检查格式是否正确 推荐 http://www.bejson.com/validators/yaml_editor/ 检查
2.放到 src/main/java 下在pom.xml加以下
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
3.invalid bound statement (not found)报错问题 检查 resources 下的mapeer文件夹名称是否和src/mian/java 文件夹下的mapper 或dao层文件名一直(这个我的不一致就不好使);然后就是参照这篇博客https://blog.youkuaiyun.com/Z__Sheng/article/details/93485347 在DataSourceConfig 文件夹里查找错误
标注的这个代码在我们使用多数据的时候,因为关闭了springboot的默认数据源配置,使用我们自己定义的数据源,此时我们在配置文件中配置的路径是不会生效的,需要我们在定义数据源代码的时候,手动指向一下mapper.xml的位置(这个是坑)注意!!!!
其次就是 mapeer层 没有加@Mapper注解 差不多就这几个问题
补充 在配置mapper-locations多数据源可能会出现java.lang.ClassNotFoundException: Cannot find class: xxx 这个错误
解决办法
@Autowired
private Environment env;
@Bean(name = "masterSqlSessionFactory")
@Primary
public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
sqlSessionFactoryBean.setTypeAliasesPackage(env.getProperty("mybatis.type-aliases-package"));
return sqlSessionFactoryBean.getObject();
}
主要加 这俩
sqlSessionFactoryBean.setVfs(SpringBootVFS.class); sqlSessionFactoryBean.setTypeAliasesPackage(env.getProperty("mybatis.type-aliases-package"));
详情见
https://juejin.im/post/5bfb607f6fb9a04a08215920
demo