spring-boot+mybatis多数据源-读写分离

本文介绍了如何在Spring Boot和MyBatis应用中实现多数据源的读写分离。通过MyBatis的拦截器插件,根据SQL语句类型(读或写)动态切换数据源。示例代码展示了拦截器的配置和使用,使得读操作路由到从库,写操作路由到主库,从而实现读写分离。此外,还提到了MySQL的读写分离可以通过第三方工具如MyCat来实现。
摘要由CSDN通过智能技术生成

继续上篇文章加点东西玩玩 spring-boot+mybatis多数据源-简化配置过程https://mp.csdn.net/postedit/100708788

有了多数据源,自然要更有意思的切换来玩,单纯的拦截器根据入参中的值进行业务判断然后切换数据源是比较简单的套路,现在来试试如何更优雅的读写分离。

mybatis提供了拦截器插件,牛逼。直接拦截sql语句,如果是读的就切到db2,写的就切到db1.就这个思路

直接上代码

拦截器

@Intercepts({
    @Signature(
        type = StatementHandler.class,
        method = "query",
        args = {Statement.class,ResultHandler.class})
        })
public class MybatisInterceptor implements Interceptor {
    public static final Logger log = LoggerFactory.getLogger(MybatisInterceptor.class);
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        String sql = ((StatementHandler)invocation.getTarget()).getBoundSql().getSql();
        if(isQuery(sql)){
            DBUtils.setDB("db2");
        }else{
            DBUtils.setDB("db1");
        }
        log.info("execute d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值