mybatis3分表插件Shardbatis的基本使用
2016-12-09 19:59 hduhans 阅读(1876) 评论(0) 收藏 举报随着系统的发展,数据量也会越来越大,当单表数据量达到5000W时读写性能会有明显下降,此时需要分表来提升数据库性能。Shardbatis是一款基于mybatis3的分表插件,它会在执行mysql前,按照指定的分表规则进行table的替换,从而实现分表。
一、在项目中配置Shardbatis
1、引入jar包
1) shardbatis-2.0.0B.jar(maven资源库好像已经找不到了...源码https://github.com/colddew/shardbatis)
<dependency> <groupId>shardbatis</groupId> <artifactId>shardbatis</artifactId> <version>2.0.0B</version> </dependency>
2) jsqlparser-0.8.0.jar
<dependency> <groupId>net.sf.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>0.8.0</version> </dependency>
2、mybatis配置(mybatis-config.xml)添加插件配置
<plugins> <plugin interceptor="com.google.code.shardbatis.plugin.ShardPlugin"> <property name="shardingConfig" value="shard_config.xml"/> </plugin> </plugins>
3、添加分表配置shard_config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE shardingConfig PUBLIC "-//shardbatis.googlecode.com//DTD Shardbatis 2.0//EN" "http://shardbatis.googlecode.com/dtd/shardbatis-config.dtd"> <shardingConfig> <!-- ignoreList可选的配置,这里的mapper方法不会对sql进行修改 --> <ignoreList> <value>com.hicoor.GoodsMapper.insert</value> </ignoreList> <parseList> <value>com.hicoor.UserMapper.insert</value> <value>com.hicoor.UserMapper.update</value> </parseList> <!-- 表名就是t_user,大小写都可 --> <strategy tableName="t_user" strategyClass="com.hicoor.common.mybatis.ShardStrategybImpl"/> </shardingConfig>
4、实现自己的分表路由规则,实现ShardStrategy接口getTargetTableName接口即可
 
package com.hicoor.common.mybatis; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Supplier; import java.util.stream.Collectors; import org.apache.log4j.Logger; import com.google.code.shardbatis.strategy.ShardStrategy; public class ShardStrategybImpl implements ShardStrategy { /** * 分表规则 * baseTableName是当前表名 * paramObj是请求参数 * mapperId是mapper方法路径 */ @Override public String getTargetTableName(String baseTableName, Object paramObj, String mapperId) { // 这里实现分表规则 return baseTableName; } }
至此,配置已完成。
 
                    
                     
                    
                 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号