分享

mybatis3分表插件shardbatis 2.0

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

一、配置:
1.在mybatis配置文件中添加插件配置
Xml代码  收藏代码
  1. <plugins>  
  2.         <plugin interceptor="com.google.code.shardbatis.plugin.ShardPlugin">  
  3.                 <property name="shardingConfig" value="shard_config.xml"/>  
  4.         </plugin>  
  5. </plugins>   

2.实现自己的sharding策略
实现一个简单的接口即可
Java代码  收藏代码
  1. /** 
  2.  * 分表策略接口 
  3.  * @author sean.he 
  4.  * 
  5.  */  
  6. public interface ShardStrategy {  
  7.         /** 
  8.          * 得到实际表名 
  9.          * @param baseTableName 逻辑表名,一般是没有前缀或者是后缀的表名 
  10.          * @param params mybatis执行某个statement时使用的参数 
  11.          * @param mapperId mybatis配置的statement id 
  12.          * @return 
  13.          */  
  14.         String getTargetTableName(String baseTableName,Object params,String mapperId);  
  15. }  

Java代码  收藏代码
  1. public class TestShardStrategyImpl implements ShardStrategy {  
  2.     // 最简单的实现修改表名的逻辑  
  3.     public String getTargetTableName(String baseTableName, Object params,  
  4.             String mapperId) {  
  5.         return baseTableName+"_xx";  
  6.     }  
  7.   
  8. }  

3.添加sharding配置
新建一个xml文件,例如:shard_config.xml
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE shardingConfig PUBLIC "-//shardbatis.//DTD Shardbatis 2.0//EN"  
  3.   "http://shardbatis./dtd/shardbatis-config.dtd">  
  4. <shardingConfig>  
  5.         <!--  
  6.                 ignoreList可选配置  
  7.                 ignoreList配置的mapperId会被分表参加忽略解析,不会对sql进行修改  
  8.         -->  
  9.         <ignoreList>  
  10.                 <value>com.google.code.shardbatis.test.mapper.AppTestMapper.insertNoShard</value>  
  11.         </ignoreList>  
  12.         <!--   
  13.                 parseList可选配置  
  14.                 如果配置了parseList,只有在parseList范围内并且不再ignoreList内的sql才会被解析和修改  
  15.         -->  
  16.         <parseList>  
  17.                 <value>com.google.code.shardbatis.test.mapper.AppTestMapper.insert</value>  
  18.         </parseList>  
  19.         <!--  
  20.                 配置分表策略 
  21.         -->  
  22.         <strategy tableName="APP_TEST" strategyClass="com.google.code.shardbatis.strategy.impl.AppTestShardStrategyImpl"/>        
  23. </shardingConfig>  

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

二、代码中使用shardbatis
因为shardbatis2.0使用插件方式对mybatis功能进行增强,因此使用配置了shardbatis的mybatis3和使用原生的mybatis3没有区别
Java代码  收藏代码
  1. SqlSession session = sqlSessionFactory.openSession();  
  2. try {  
  3.         AppTestMapper mapper = session.getMapper(AppTestMapper.class);  
  4.   mapper.insert(testDO);  
  5.         session.commit();  
  6. } finally {  
  7.         session.close();  
  8. }  


更多详细信息请移步google code:http://code.google.com/p/shardbatis/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多