采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper标签: springbootshardbatisspringboot分表mybatis分表插件分表2017-01-13 22:35 927人阅读 评论(7) 收藏 举报 分类: javaweb入门学习(12) 版权声明:本文为博主原创文章,未经博主允许不得转载。在最近的一个小项目中,由于会用到一点关于分表的操作,数据库是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表查询主要实现插件中的分表策略接口,代码如下:[java]
view plain copypublic class CityShardStrategyImpl implements ShardStrategy { Logger LOG = LoggerFactory.getLogger(getClass()); @Override public 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
采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
最新推荐文章于 2025-06-27 14:41:17 发布
