采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
来源:互联网 发布:删除静态ip ubuntu 编辑:程序博客网 时间:2024/06/06 18:01
在最近的一个小项目中,由于会用到一点关于分表的操作,数据库是mysql的,在那个mysql数据库中有一个函数,每天会创建一张数据表作为分表,创建出来的表和原始表的结构不变,只是表名有一点改变。
为此,为了解决这个问题,我在网上搜索了一些关于分表的解决办法,我这里用的是mybatis作为持久层框架,在网上找到了一个叫做shardbatis的开源插件,于是便用了起来,但在使用的过程中,发现这个shardbatis 和最新版本的pageHelper有JAR包冲突,为了解决它,我将之前的shardbatis项目进了一个小改,项目地址为:点击打开链接
为了能让以后的新项目能快速开发,我这里将它写成一个小DEMO,以后若是有类似的情况出现,以便我快速使用。
代码我都记录在了github上了,这里就不贴代码了,只上效果图。
创建了3张表,表内数据截图如下:
分别为city,city_2015,city_2016三张表,其为假设city_2015,city_2016为分表
当发现查询条目的id为3,4时从city_2015表查询;id为5,6时从city_2016表查询,其他数据从city表查询
主要实现插件中的分表策略接口,代码如下:
public class CityShardStrategyImpl implements ShardStrategy {Logger LOG = LoggerFactory.getLogger(getClass());@Overridepublic String getTargetTableName(String baseTableName, Object params, String mapperId) {LOG.debug("baseTableName->" + baseTableName + " \tparams->" + params + "\tmapperId->" + mapperId);if (params instanceof Long) {int nowIndex = ((Long) params).intValue();if (nowIndex == 3 || nowIndex == 4) {baseTableName = baseTableName + "_" + 2015;} else if (nowIndex == 5 || nowIndex == 6) {baseTableName = baseTableName + "_" + 2016;}}LOG.debug("proced baseTableName->" + baseTableName + " \tparams->" + params + "\tmapperId->" + mapperId);return baseTableName;}}
DEMO运行分表截图如下:
OK!用这个插件,确实感觉好简单,一下就搞定了,感谢开源插件贡献者
本小DEMO swagger截图:
druid监控台截图:
DEMO开源地址:
https://github.com/puhaiyang/springBoot-swagger-mybatis-shardbatis
0 0
- 采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
- 采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
- shardbatis
- springboot+mybatis+resteasy+swagger整合
- springboot整合mybatis,swagger ui
- Swagger与SpringBoot的整合
- Swagger与SpringBoot的整合
- Springboot整合Swagger过程中遇到的坑
- SpringBoot集成MyBatis的分页插件PageHelper
- (4)学习SpringBoot之整合 Mybatis+PageHelper分页
- springboot整合mybatis和pageHelper异常问题记录
- springboot+mybatis+pagehelper分页
- springboot 整合generator代码生成工具 使用swagger展示接口 使用pagehelper做分页
- swagger 与 springboot 的整合实战
- springBoot+swagger+mybatis 常用的增删改
- 在 SSM 中基于 MyBatis-PageHelper 分页插件的分页功能实现
- springboot整合swagger
- springboot整合swagger
- 使用Druid加密
- ns3安装、测试及常见问题
- 实验表时间点恢复(Oracle 12c新功能)
- nodejs 上传
- 《大型网站技术架构》笔记:大型网站核心架构要素
- 采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
- 获取表单信息
- 聊聊高并发系统之降级特技
- TCP/IP、Http、Socket的区别
- linux应用程序(1)---动态链接库
- 2017.1.13【初中部 】普及组模拟赛C组 maxsum 最大约数和 题解
- 聊聊高并发系统之限流特技-1
- zabbix通过简单shell命令监控elasticsearch集群状态
- 一点到其他点的最短路径