MyBatis分表分库插件的实现(推荐)
Subtable-Plugin
MyBatis分表插件,对MyBatis代码无侵入,不改变对MyBatis的使用习惯。
使用示例
1、mybatis-config.xml配置文件添加插件
<plugins><plugin interceptor="org.jwxa.mybatis.subtable.plugin.SubTablePlugin" />
</plugins>
2、需要分表的Mapper/Dao类添加@SubTable
注解,使用strategyClass
指定分表策略类
// LongStrategy:自定义分表策略类
@SubTable(strategyClass=LongStrategy.class)
3、不需要分表的方法添加@SubTableIgnore
注解
@SubTableIgnore
List<User> getList();
联系
1、有需要源码的同学,发送“MyBatis分表分库”到1829003685@qq.com 获取
分表策略
- 自定义分表策略需要实现
org.jwxa.mybatis.subtable.strategy.Strategy
接口,实现getFinalTable
获取最终表名方法。 StrategyUtil
工具类提供常用分表策略方法。
**使用示例:**使用Long类型id分表,10张分表
// 10张表,用id进行分表
public class LongStrategy implements Strategy {@Overridepublic String getFinalTable(String baseTableName, Object params) {Long flag = -1l;if(params instanceof User) {flag = ((User)params).getId();}else if(params instanceof Long) {flag = (Long) params;}return StrategyUtil.getHashTable(baseTableName, "_", flag, 10);}
}
测试示例说明
- 执行
src/test/resources/initsql.sql
初始化数据库 - 运行MyBatis测试修改
mybatis-config.xml
数据库配置信息,测试类:org.jwxa.mybatis.subtable.test.DeviceDaoTest
- 运行Spring-MyBatis测试修改
jdbc.properties
数据库配置信息,测试类:org.jwxa.mybatis.subtable.test.spring.UserDaoTest
MyBatis分表分库插件的实现(推荐)相关推荐
- 数据库中间件(分表分库路由)
分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后的表 ...
- 学会数据库读写分离、分表分库
https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优 ...
- .Net 下高性能分表分库组件-连ShardingCore接模式原理
ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵. Github Source Code 助力dotnet 生态 Gi ...
- Abp VNext 集成sharding-core 分表分库
ShardingCore 易用.简单.高性能.普适性,是一款扩展针对efcore生态下的分表分库的扩展解决方案,支持efcore2+的所有版本,支持efcore2+的所有数据库.支持自定义路由.动态路 ...
- [NewLife.XCode]分表分库(百亿级大数据存储)
NewLife.XCode是一个有15年历史的开源数据中间件,支持netcore/net45/net40,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量 ...
- mysql如何根据业务分表设计_mysql分表分库的应用场景和设计方式
很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于MySQL分库分表的应用场景和最优的设计方式举例. 一. 分表 ...
- .NETCore 下支持分表分库、读写分离的通用 Repository
首先声明这篇文章不是标题党,我说的这个类库是 FreeSql.Repository,它作为扩展库现实了通用仓储层功能,接口规范参数 abp vnext,定义和实现基础的仓储层(CURD). 安装 do ...
- asp.net mysql 读写分离_.NET Core实现分表分库、读写分离的通用 Repository功能
首先声明这篇文章不是标题党,我说的这个类库是 FreeSql.Repository,它作为扩展库现实了通用仓储层功能,接口规范参考 abp vnext 定义,实现了基础的仓储层(CURD). 安装 d ...
- 由mysql分区想到的分表分库的方案
在分区分库分表前一定要了解分区分库分表的动机. 对实时性要求比较高的场景,使用数据库的分区分表分库. 对实时性要求不高的场景,可以考虑使用索引库(es/solr)或者大数据hadoop平台来解决(如数 ...
最新文章
- 用C#对ADO.NET数据库完成简单操作
- 广东省生态土壤所孙蔚旻团队FEMS: 砷锑污染土壤剖面的微生物世界
- CoGAN pytorch
- aws python lambda_AWS Lambda
- pygame (1) 移动小乌龟
- 守护(后台)进程的创建
- C++ ActiveX开发的问题讨论
- 用simulink分析傅里叶变换、短时傅里叶变换和小波变换
- .net 发布程序时出现“类型ASP.global_asax同时存在于...”错误的解决办法
- php包含文件不存在,PHP包含文件错误,服务器有该文件,直接访问提示不存在
- dev grid 常用方法
- html事件绑定的方法,如何获取html元素所绑定的事件
- 北京市房山区卫星地图下载
- 微小宝编辑器修改html代码,怎么在微小宝编辑器提取永久链接
- opencv之c++环境搭建linux、windows
- Java网络编程之实现资源下载详解【王道Java】
- 甲骨文华育兴业|【大数据调查】80%的程序员年薪都在10万以上,三分之一的人年薪20万以上
- H5和原生APP之间的区别
- 第一节 使用ISM Web组态软件采集Modbus设备数据
- 三星n9008 android 6.0,三星note3_三星n9008s_三星n9008s更新6.0