美文网首页Java工程师知识树SSM
Web框架-Mybatis-动态数据源切换

Web框架-Mybatis-动态数据源切换

作者: HughJin | 来源:发表于2021-04-07 06:32 被阅读0次

    Java工程师知识树 / Web框架SSM


    数据库读写分离方案

    一、通过MyBatis配置文件

    通过MyBatis配置文件创建读写分离两个DataSource,每个SqlSessionFactoryBean对象的mapperLocations属性制定两个读写数据源的配置文件。将所有读的操作配置在读文件中,所有写的操作配置在写文件中。

    优点:实现简单
    缺点:维护麻烦,需要对原有的xml文件进行重新修改,不支持多读,不易扩展

    二、通过Spring AOP

    通过Spring AOP在业务层实现读写分离,在DAO层调用前定义切面,利用Spring的AbstractRoutingDataSource解决多数据源的问题,实现动态选择数据源

    优点:通过注解的方法在DAO每个方法上配置数据源,原有代码改动量少,易扩展,支持多读
    缺点:需要在DAO每个方法上配置注解,人工管理,容易出错

    三、通过Mybatis的Plugin

    通过Mybatis的Plugin在业务层实现数据库读写分离,在MyBatis创建Statement对象前通过拦截器选择真正的数据源,在拦截器中根据方法名称不同(select、update、insert、delete)选择数据源。

    优点:原有代码不变,支持多读,易扩展

    四、通过spring的AbstractRoutingDataSource和mybatis Plugin拦截器

    如果你的后台结构是spring+mybatis,可以通过spring的AbstractRoutingDataSource和mybatis Plugin拦截器实现非常友好的读写分离,原有代码不需要任何改变。推荐第四种方案

    优点:原有代码不需要任何改变,支持多读,易扩展

    延伸阅读:

    Spring+MyBatis实现数据库读写分离方案

    相关文章

      网友评论

        本文标题:Web框架-Mybatis-动态数据源切换

        本文链接:https://www.haomeiwen.com/subject/kdpdcltx.html