mybatis多数据源配置_SpringBoot+Mybatis配置多数据源的踩坑记录

关于如何配置springboot+mybatis的多数据源,网上有很多类似的文章,我主要参考的是 这一篇文章,按照文章中作者的步骤是能配置成功的,其实最核心的要点就是将之前我们在application.yml中写几行配置的步骤变成我们自己使用javaConfig的方式手动将springboot和mybatis整合起来,不过一些在application.yml中的配置是不会生效的,还是得我们自己在JavaConfig中配置,然后坑就来了...

比如mybatis配置自动驼峰命名转换,在application.yml文件中是这样配置的:

mybatis:
  configuration:
    map-underscore-to-camel-case: true

idea输入"cam",第一个提示就是,然后按2下回车就能搞定了,使用JavaConfig的方式也不复杂,是需要配置SqlSessionFactoryBean的一个属性就行了。还有mapper xml文件的扫描路径也是

    /**
     * 创建 SqlSessionFactory
     */
    @Bean(name = "db1SqlSessionFactory")
    @Primary
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        // 配置mapper xml文件的扫描路径
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));
        // 配置自动驼峰命名转换
        bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
        return bean.getObject();
    }

注意!坑来了!!!

bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));

这一行代码,也就是配置mapper xml文件的扫描路径的代码,必须在这一行:

bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);

也就是配置自动驼峰命名转换的代码之前!

我一开始反过来的,然后启动完成后倒没什么问题,可是一访问sql写在mapper.xml文件里的接口就会报这么一个很诡异的异常 ↓ ,偏偏访问写在sql注解的那个却没问题

a215642fbf32f3d39b846a14290b45e4.png

然后你去谷歌或者百度搜 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ,你会发现基本上对解决这个情景下出现的问题基本上没什么卵用

然后我看了下这篇文章, 发现作者留的代码示例能跑通,事已至此,还能咋办?既然他的代码能跑通,那就把我的代码和他的代码一行行的比较呗,终于花了将近2个小时总算是找到了上面那个坑......

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值