源码分析 – MyBatis Plus 多数据源踩坑

本文介绍了在使用MyBatis Plus进行多数据源配置时遇到的问题及解决方案。在尝试将报表数据库从MySQL迁移到TiDB的过程中,作者在3.0.6版本的MyBatis Plus中遇到保存操作时的错误,原因是IService接口的save和saveBatch方法获取sqlSessionFactory的方式不同。解决办法是手动设置GlobalConfig的sqlSessionFactory。此外,作者发现此问题在3.4.0及以上版本已被修复,提醒开发者要保持依赖库的更新。
摘要由CSDN通过智能技术生成

公司准备把报表数据库从MySQL迁到TiDB,先用几个功能试点。于是在系统上需要配置多个数据源。之前在上家公司用MyBatis时配置过4个数据源,MyBatis Plus下应该是大同小异。不出意外的话就要出意外,结果还是踩了坑。

环境

MyBatis Plus版本:3.0.6

配置

项目中使用shardingjdbc管理数据源,这里只贴其中一个配置

@Bean("tidbSqlSessionFactory")
public SqlSessionFactoryBean getTidbSqlSessionFactory(@Autowired ApplicationContext context, @Autowired MetaObjectHandler metaObjectHandler) throws Exception {

    MasterSlaveDataSource dataSource = (MasterSlaveDataSource) context.getBean(DataSource.class);
    DataSource tidbDataSource = dataSource.getConnection().getDataSourceMap().get("ds-tidb");

    SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
    bean.setDataSource(tidbDataSource);

    List<ClassPathResource> resourceList = new ArrayList<>();
    String path = MybatisPlusConfig.class.getResource("/mapper2").getPath();
    FileUtils.scan(path, f -> {
        if
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值