shardbait2.0实现分表的功能可以用一句话描述:使用mybatis3的插件机制在执行sql之前对原始sql的里的表名进行修改。
一、配置:
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中
二、代码中使用shardbatis
因为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:
http://code.google.com/p/shardbatis/
分享到:
相关推荐
而Shardbatis则是一个专门针对Spring和MyBatis设计的分库分表插件,用于简化数据库分片的实现过程。 首先,我们需要理解Spring的核心概念。Spring是一个开源的Java平台,它提供了全面的软件基础设施服务,用于构建...
4. **注入Mybatis**:配置Mybatis的`plugins`元素,指定分库分表插件类,使Mybatis在执行SQL时调用插件。 四、实际应用示例 以mybatis-sharding插件为例,这是一个开源的Mybatis分库分表解决方案。它提供了丰富的...
MyBatis Code Generator 插件是一款非常实用的工具,它极大地简化了开发人员在使用MyBatis框架时的代码编写工作。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码...
本文将深入探讨Mybatis分库分表插件的核心概念、工作原理以及实际应用。 首先,我们要了解分库分表的基本概念。分库是指将一个大数据库拆分成多个小数据库,每个数据库存储一部分数据,这样可以分散数据库的负载。...
本项目基于Java、SpringBoot、MyBatis以及ShardingJDBC实现了一个分库分表的解决方案,旨在帮助开发者理解并掌握这一技术。以下是关于这些技术的详细介绍: **Java**: Java是一种广泛使用的面向对象的编程语言,...
MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。 安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx 搜索并安装。 无法打开的,下载插件安装
MyBatis逆向工程插件,也被称为MyBatis Generator(MBG),是MyBatis框架的一个强大工具,主要用于自动生成MyBatis的Mapper接口、XML映射文件以及实体类,极大地提高了开发效率。这个插件能够根据数据库中的表结构...
### IntelliJ IDEA 2018 安装 Mybatis_Plus 插件详解 在Java开发领域,IntelliJ IDEA 是一款极为流行的集成开发环境(IDE),它提供了丰富的功能来提高开发效率。对于使用MyBatis框架进行数据库操作的开发者来说,...
Eclipse 插件则为MyBatis的开发带来了极大的便利,使得在IDE中可以更加高效地进行MyBatis相关的工作。本资料集合包含了完整的MyBatis Eclipse 插件的安装、配置以及使用教程,非常适合初学者和有一定经验的开发者...
而“mybatis物理分页插件”是针对MyBatis设计的一个扩展,用于解决在大数据量查询时的性能问题,通过实现物理分页来避免内存溢出。 物理分页是指在数据库层面进行分页,相比于逻辑分页(在应用层进行数据截取),...
springmvc下的mybatis的sharding分表,执行resources下的database.sql建立mysql的分表,修改applicationContext.xml的数据库用户名和密码,既可以运行maven项目,详细开发过程如我的博客地址:...
基于mybatis的慢SQL小插件,原理是mybatis拦截器。只需要在springboot的配置文件做简单的配置,mybatis拦截器将SQL中所有参数自动做了填充。拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL...
在MyBatis中,可以自定义插件实现一致性哈希的计算,将数据映射到相应的分表。 总结来说,基于MyBatis的数据库拆分和读写分离实现,涉及到对MyBatis框架的深入理解和扩展,包括对SqlSessionTemplate的改造、数据库...
MyBatis逆向工程插件是一款强大的工具,它极大地简化了数据库模型到Java实体类、Mapper接口以及XML配置文件的创建过程。这个插件能够自动根据数据库表结构生成相应的Java代码,大大提高了开发效率,降低了手动编写...
MybatisX 快速开发插件是一款专为Java开发者设计的高效工具,旨在提升使用Mybatis框架进行开发的工作效率。这款插件是针对IntelliJ IDEA(简称IDEA)集成开发环境的扩展,通过集成在IDEA中,它能够提供一系列便捷的...
下面我们将详细介绍如何在Eclipse中安装和使用MyBatis Generator插件。 首先,我们需要获取MBG的插件文件。通常,你可以从官方网站或者第三方资源站点下载到`mybatis-generator-eclipse-plugin`的zip压缩包。下载...
06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo...
MyBatisX是一款深受开发者喜爱的IDEA插件,它为使用MyBatis框架的开发工作提供了诸多便利。本离线安装包专为IDEA 2021版本设计,无需网络连接即可进行安装,方便那些网络环境受限或追求效率的开发者。 1. **MyBatis...