2020年11月2日星期一

shardbatis实现分表

Shardbatis的名称由shard(ing)+mybatis组合得到,是谷歌的一款开源软件。旨在为mybatis实现数据水平切分的功能。数据的水平切分包括多数据库的切分和多表的数据切分,目前shardbatis只实现了单数据库的数据多表水平切分。Shardbatis对mybatis的代码无侵入,不改变用户对mybatis的使用习惯。

1.配置pom文件依赖

<!-- pom中引入依赖 --><dependency> <groupId>org.shardbatis</groupId> <artifactId>shardbatis</artifactId> <version>2.0.0B</version></dependency><!-- 由于googlecode已关闭远程仓库,已不可用 --><repository> <id>shardbaits</id> <name>shardbaits repository</name> <url> <snapshots>  <enabled>false</enabled> </snapshots></repository>

由于googlecode已关闭远程仓库,以上依赖已不可用,可以考虑将其源码复制下来放入自己的工程里面: shardbatis

<?

4.实现上述2中配置的分表策略TTableStrategy

该类实现com.google.code.shardbatis.strategy.ShardStrategy接口,并重写接口getTargetTableName,其中参数baseTableName就是mybatis的mapper.,param就是方法传递的参数,mapperId就是方法名;这些参数值都是插件自动获取的。
方法返回的tableName就是真实要操作的表名,插件会把mapper.,然后进行sql操作

public class TTableStrategy implements ShardStrategy { @Override public String getTargetTableName(String baseTableName, Object param, String mapperId) {  String tableName = baseTableName;  String partitionId = null;  if (param instanceof TTable) {  //这里的TTable是表名对应的实体类,对象的partitionId是在调用mapper接口前设定好的   TTable obj= (TTable) param;   partitionId = ojb.getPartitionId();  } else if (param instanceof TTableExample) {  //TTableExample是mybatis插件自动生成的代码,用过mybatis-generate插件的肯定了解,不多说;对象的partitionId是在调用mapper接口前设定好的   TTableExample obj= (TTableExample) param;   partitionId = obj.getPartitionId();  }  if(!StringUtils.isNullOrEmpty(partitionId)){   tableName = tableName + "_" + partitionId;  }  return tableName; }}

5.添加新的分表

如果项目上已经实现了shardbatis分表,要新增一个新的要分表的表,只需要修改步骤3中的配置文件并按照步骤4实现对应的策略类即可。

原文转载:http://www.shaoqun.com/a/485977.html

燕文物流:https://www.ikjzd.com/w/2229

acca是什么:https://www.ikjzd.com/w/1370

活动树:https://www.ikjzd.com/w/1518


Shardbatis的名称由shard(ing)+mybatis组合得到,是谷歌的一款开源软件。旨在为mybatis实现数据水平切分的功能。数据的水平切分包括多数据库的切分和多表的数据切分,目前shardbatis只实现了单数据库的数据多表水平切分。Shardbatis对mybatis的代码无侵入,不改变用户对mybatis的使用习惯。1.配置pom文件依赖<!--pom中引入依赖-->
欧舒丹:https://www.ikjzd.com/w/1756
crowd:https://www.ikjzd.com/w/880
河源和平林寨古村怎么走?:http://tour.shaoqun.com/a/1631.html
泉州北溪文苑桃花谷怎么走?:http://tour.shaoqun.com/a/5251.html
云南香格里拉滑雪场好玩吗?:http://tour.shaoqun.com/a/5115.html

没有评论:

发表评论