mybatis3分表插件shardbatis 2.0

本文介绍如何通过shardbatis2.0插件为MyBatis实现分表功能。主要步骤包括配置插件、实现自定义分表策略及设置sharding配置等。此方法能够灵活地对SQL语句中的表名进行动态替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shardbait2.0实现分表的功能可以用一句话描述:使用mybatis3的插件机制在执行sql之前对原始sql的里的表名进行修改。

[size=medium]一、配置:[/size]
1.在mybatis配置文件中添加插件配置

<plugins>
<plugin interceptor="com.google.code.shardbatis.plugin.ShardPlugin">
<property name="shardingConfig" value="shard_config.xml"/>
</plugin>
</plugins>

2.实现自己的sharding策略
实现一个简单的接口即可

/**
* 分表策略接口
* @author sean.he
*
*/
public interface ShardStrategy {
/**
* 得到实际表名
* @param baseTableName 逻辑表名,一般是没有前缀或者是后缀的表名
* @param params mybatis执行某个statement时使用的参数
* @param mapperId mybatis配置的statement id
* @return
*/
String getTargetTableName(String baseTableName,Object params,String mapperId);
}


public class TestShardStrategyImpl implements ShardStrategy {
// 最简单的实现修改表名的逻辑
public String getTargetTableName(String baseTableName, Object params,
String mapperId) {
return baseTableName+"_xx";
}

}

3.添加sharding配置
新建一个xml文件,例如: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可选配置
ignoreList配置的mapperId会被分表参加忽略解析,不会对sql进行修改
-->
<ignoreList>
<value>com.google.code.shardbatis.test.mapper.AppTestMapper.insertNoShard</value>
</ignoreList>
<!--
parseList可选配置
如果配置了parseList,只有在parseList范围内并且不再ignoreList内的sql才会被解析和修改
-->
<parseList>
<value>com.google.code.shardbatis.test.mapper.AppTestMapper.insert</value>
</parseList>
<!--
配置分表策略
-->
<strategy tableName="APP_TEST" strategyClass="com.google.code.shardbatis.strategy.impl.AppTestShardStrategyImpl"/>
</shardingConfig>

shard_config.xml必须保存在应用的classpath中

[size=medium]二、代码中使用shardbatis[/size]
因为shardbatis2.0使用插件方式对mybatis功能进行增强,因此使用配置了shardbatis的mybatis3和使用原生的mybatis3没有区别

SqlSession session = sqlSessionFactory.openSession();
try {
AppTestMapper mapper = session.getMapper(AppTestMapper.class);
mapper.insert(testDO);
session.commit();
} finally {
session.close();
}


更多详细信息请移步google code:[url]http://code.google.com/p/shardbatis/[/url]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值