Java工程师知识树SSM

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

2021-04-07  本文已影响0人  HughJin

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实现数据库读写分离方案

上一篇 下一篇

猜你喜欢

热点阅读