Mybatis Plus本身不支持分库分表,但可以通过实现插件,结合Mybatis的分库分表功能来实现。
分库分表的大致步骤是:
1、 确定分库分表策略
根据场景需要,制定分库分表的规则。
可以是:
- 根据ID取模
- 根据用户分库
- 根据发布时间分库
- 等等
2、 实现Mybatis Plus插件
实现Interceptor接口:
public class RouterInterceptor implements Interceptor{
public Object intercept(Invocation ivk) {
// 根据分库分表策略路由
String database = decideDatabase();
// 切换数据源
DataSource dataSource = ...
Transaction tx = ... // 事务管理
// 执行原操作
return ivk.proceed();
}
}
在插件方法中:
- 获取分库分表策略
- 切换数据源
- 绑定事务
- 执行原操作
3、 注册Mybatis Plus插件
<plugins>
<plugin interceptor="com.itzhimei.RouterInterceptor">
...
</plugin>
</plugins>
4、 开始使用
按正常过程使用Mybatis Plus就可以自动实现分库分表。
通过这个流程,可以实现Mybatis Plus的分库分表功能:
- 制定分库分表策略
- 实现Plugins符合策略
- 注册Plugins
- 正常使用Mybatis Plus即可