关于如何配置springboot+mybatis的多数据源,网上有很多类似的文章,我主要参考的是 这一篇文章,按照文章中作者的步骤是能配置成功的,其实最核心的要点就是将之前我们在application.yml中写几行配置的步骤变成我们自己使用javaConfig的方式手动将springboot和mybatis整合起来,不过一些在application.yml中的配置是不会生效的,还是得我们自己在JavaConfig中配置,然后坑就来了…
比如mybatis配置自动驼峰命名转换,在application.yml文件中是这样配置的:
1 | mybatis: |
idea输入”cam”,第一个提示就是,然后按2下回车就能搞定了,使用JavaConfig的方式也不复杂,是需要配置SqlSessionFactoryBean的一个属性就行了。还有mapper xml文件的扫描路径也是
1 | /** |
注意!坑来了!!!
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));
这一行代码,也就是配置mapper xml文件的扫描路径的代码,必须在这一行:
bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
也就是配置自动驼峰命名转换的代码之前!
我一开始反过来的,然后启动完成后倒没什么问题,可是一访问sql写在mapper.xml文件里的接口就会报这么一个很诡异的异常 ↓ ,偏偏访问写在sql注解的那个却没问题
然后你去谷歌或者百度搜 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
,你会发现基本上对解决这个情景下出现的问题基本上没什么卵用
然后我看了下这篇文章, 发现作者留的代码示例能跑通,事已至此,还能咋办?既然他的代码能跑通,那就把我的代码和他的代码一行行的比较呗,终于花了将近2个小时总算是找到了上面那个坑……