springboot 创建多数据源invalid bound statement (not found)

遇到错误问题

         1.如果是yml文件配置,首先第一检查格式是否正确  推荐 http://www.bejson.com/validators/yaml_editor/  检查 

         2.invalid bound statement (not found)报错问题    检查 resources 下的mapeer文件夹名称是否和src/mian/java 文件夹下的mapper 或dao层文件名一直(这个我的不一致就不好使);然后就是参照这篇博客https://blog.csdn.net/Z__Sheng/article/details/93485347    在DataSourceConfig 文件夹里查找错误

springboot 创建多数据源invalid bound statement (not found)_第1张图片
标注的这个代码在我们使用多数据的时候,因为关闭了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

https://github.com/wangshanghello/springbootDualdataSou

你可能感兴趣的:(springboot)