mybatis的sharding分表

最近业务系统处理数据量比较大,需要分表,由于用的mybatis做持久化,有sharding插件可以直接用,下面是自己做的demo部分

一、Pom.xml添加maven依赖,

<dependency>

<groupId>org.shardbatis</groupId>

<artifactId>shardbatis</artifactId>

<version>2.0.0D</version>

</dependency>

二、mybatis-config.xml配置文件配置sharding插件

<plugins>

<plugininterceptor="com.google.code.shardbatis.plugin.ShardPlugin">

<propertyname="shardingConfig"value="shard_config.xml"/>

</plugin>

</plugins>

三、实现分表策略接口,获取分表的实际表名(测试策略是根据年了求余2,在基础表名后家上下斜线和余数组成实际表名称)

public
class
ShardStrategyImpl implements ShardStrategy {

/**

* 得到实际表名

* @parambaseTableName逻辑表名,一般是没有前缀或者是后缀的表名

* @param params        mybatis执行某个statement时使用的参数

* @param mapperId      mybatis配置的statement id

* @return

*/

public StringgetTargetTableName(StringbaseTableName,Object params, String mapperId) {

Integerk = 0;

if (params !=null) {

ShardTestBeanshardTestBean = (ShardTestBean) params;

Integertemp = shardTestBean.getAge();

k= temp % 2;

}

returnbaseTableName +"_" + k;

}

}

四、配置分表策略的sharding配置文件

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPEshardingConfigPUBLIC"-//shardbatis.googlecode.com//DTDShardbatis 2.0//EN"

"http://shardbatis.googlecode.com/dtd/shardbatis-config.dtd">

<shardingConfig>

<!-- parseList可选配置

如果配置了parseList,只有在parseList范围内并且不再ignoreList内的sql才会被解析和修改 
-->

<parseList><value>shardTest.addShardTest</value></parseList>

<!-- 配置分表策略  -->

<strategytableName="shard_test"strategyClass="
service.ShardStrategyImpl"
/>

</shardingConfig>

五、使用的时候写表名shard_test,sharding插件会自动根据第三步实现的策略找到正确的表名称

<insertid="addShardTest"parameterType="
model.ShardTestBean"
>

INSERT INTO shard_test(username,password,age,remark) VALUES(#{userName},#{password},#{age},#{remark})

</insert>

六、详细的代码地址如下(执行resources下的database.sql建立mysql的分表,修改applicationContext.xml的数据库用户名和密码,既可以运行maven项目):

http://download.csdn.net/detail/zhulin40/7790399

mybatis的sharding分表

时间: 2024-08-29 06:44:41

mybatis的sharding分表的相关文章

sharding-jdbc结合mybatis实现分库分表功能

最近忙于项目已经好久几天没写博客了,前2篇文章我给大家介绍了搭建基础springMvc+mybatis的maven工程,这个简单框架已经可以对付一般的小型项目.但是我们实际项目中会碰到很多复杂的场景,比如数据量很大的情况下如何保证性能.今天我就给大家介绍数据库分库分表的优化,本文介绍mybatis结合当当网的sharding-jdbc分库分表技术(原理这里不做介绍) 首先在pom文件中引入需要的依赖 <dependency> <groupId>com.dangdang</gr

分表需要解决的问题 &amp; 基于MyBatis 的轻量分表落地方案

分表:垂直拆分.水平拆分 垂直拆分:根据业务将一个表拆分为多个表. 如:将经常和不常访问的字段拆分至不同的表中.由于与业务关系密切,目前的分库分表产品均使用水平拆分方式. 水平拆分:根据分片算法将一个表拆分为多个表. 如:按照ID的最后一位以3取余,尾数是1的放入第1个库(表),尾数是2的放入第2个库(表)等. 解决的问题:单纯的分表可以解决数据量过大导致检索变慢的问题. 分表无法解决过多并发请求访问同一个库,导致数据库响应变慢的问题.所以通常水平拆分都至少要采用分库的方式,用于一并解决大数据量

数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7696085 ,转载请注明出处!本文着重介绍sharding切分策略,如果你对数据库sharding缺少基本的了解,请参考我另一篇从基础理论全面介绍sharding的文章:数据库Sharding的基本思想和切分策略 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解(点击查看大图) 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系

数据库分库分表(sharding)

第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解(点击查看大图) 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系统业务逻辑和数据库schema.一个好的建议是绘制一张数据库ER图或领域模型图,以这类图为基础划分shard,直观易行,可以确保开发人员始终保持清醒思路.对于是选择数据库ER图还是领域模型图要根据项目自身情况进行选择.如果项目使用数据驱动的开发方式,团队以数据库ER图作为业务交流的基础,则自然会选择数据库ER图,如果项目使用的

数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量

当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产 品可供参考,同时很多团队也会选择自主开发实现,而不管是选择框架还是自主开发,都会面临一个在哪一层上实现sharding逻辑的问题,本文会对这一系 列的问题逐一进行分析和考量.本文原文连接: http://blog.csdn.net/bluishglc/article/details/7766508转载请注明出处! 一.sharding逻辑的实现层面 从

据库分库分表(sharding)系列(一) 拆分实施策略和示例演示

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7696085 ,转载请注明出处!本文着重介绍sharding切分策略,如果你对数据库sharding缺少基本的了解,请参考我另一篇从基础理论全面介绍sharding的文章:数据库Sharding的基本思想和切分策略 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解(点击查看大图) 1.准备阶段 对 数据库进行分库分表(Sharding化)前,需要开发人员充分了解

数据库分库分表(sharding)系列

数据库分库分表(sharding)系列     目录; (一) 拆分实施策略和示例演示 (二) 全局主键生成策略 (三) 关于使用框架还是自主开发以及sharding实现层面的考量 (四) 多数据源的事务处理 (五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案 (一) 拆分实施策略和示例演示 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系统业务逻辑和数据库sch

数据库分库分表(sharding)系列(一)数据库Sharding的基本思想和切分策略

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7696085 ,转载请注明出处!本文着重介绍sharding切分策略,如果你对数据库sharding缺少基本的了解,请参考我另一篇从基础理论全面介绍sharding的文章:数据库Sharding的基本思想和切分策略 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解(点击查看大图) 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系

转数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7696085 ,转载请注明出处!本文着重介绍sharding切分策略,如果你对数据库sharding缺少基本的了解,请参考我另一篇从基础理论全面介绍sharding的文章:数据库Sharding的基本思想和切分策略 第一部分:实施策略 图1.数据库分库分表(sharding)实施策略图解(点击查看大图) 1.准备阶段 对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系