采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
2017-01-13 22:35
1176 查看
在最近的一个小项目中,由于会用到一点关于分表的操作,数据库是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表查询
主要实现插件中的分表策略接口,代码如下:
DEMO运行分表截图如下:
OK!用这个插件,确实感觉好简单,一下就搞定了,感谢开源插件贡献者
本小DEMO swagger截图:
druid监控台截图:
记录一个网上的对于springboot的日志配置方法地址:http://www.cnblogs.com/lixuwu/p/5804793.html
为此,为了解决这个问题,我在网上搜索了一些关于分表的解决办法,我这里用的是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()); @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记录一个网上的对于springboot的日志配置方法地址:http://www.cnblogs.com/lixuwu/p/5804793.html
相关文章推荐
- 采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
- Spring Boot+Mybatis+Druid+PageHelper实现多数据源并分页的方法
- springboot整合mybatis和pageHelper异常问题记录
- SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
- Spring与Mybatis+PageHelper实现分页整合(三)
- springboot使用之二:整合mybatis(xml方式)并添加PageHelper插件
- SpringBoot + Mybatis + Mapper + PageHelper + Spring Batch 整合
- SpringBoot+Mybatis+PageHelper简化分页实现
- Mybatis分页插件 - PageHelper与springBoot的整合
- (十一)Spring Boot整合Mybatis使用druid实现多数据源自动切换
- SpringBoot集成MyBatis的分页插件PageHelper(回头草)
- spring+Mybatis+ PageHelper实现分页
- Springboot使用PageHelper插件实现翻页
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- springboot整合mybatis实现多数据库的切换
- Springboot整合Mybatis实现Druid多数据源
- (三)spring boot + mybatis +pagehelper 添加Dao工具类
- Spring Boot : 集成mybatis、pagehelper插件、开启事务、druid数据源配置、mybatis-generator(十一)
- spring boot +Thymeleaf+mybatis 集成通用PageHelper,做分页