# mybatis-subtable **Repository Path**: fork-code/mybatis-subtable ## Basic Information - **Project Name**: mybatis-subtable - **Description**: mybatis分表插件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-09-08 - **Last Updated**: 2022-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mybatis-subtable #### 介绍 mybatis分表插件 ## mybatis-subtable MyBatis分表插件,对MyBatis代码无侵入,不改变对MyBatis的使用习惯。 ## 使用示例 1、mybatis-config-spring.xml配置文件添加插件 ```xml ``` 2、需要分表的Mapper/Dao类添加`@SubTable`注解,使用`strategyClass`指定分表策略类 ```java // LongStrategy:自定义分表策略类 @SubTable(strategyClass=LongStrategy.class) ``` 3、不需要分表的方法添加`@SubTableIgnore`注解 ```java @SubTableIgnore List getList(); ``` ## 分表策略 - 自定义分表策略需要实现`subtable.strategy.Strategy`接口,实现`getFinalTable`获取最终表名方法。 **使用示例:**使用Long类型id分表,10张分表 ```java /** * 10张表,用id进行分表 */ public class LongStrategy implements Strategy { @Override public String getFinalTable(String baseTableName, Object params) { Long flag = -1l; if(params instanceof User) { flag = ((User)params).getId(); }else if(params instanceof Long) { flag = (Long) params; } return StrategyUtil.getHashTable(baseTableName, "_", flag, 10); } } /** * 分表策略,按orgNo进行分表 */ public class SEventErrRecordStrategy implements Strategy { @Override public String getFinalTable(String baseTableName, Object params) { String orgNo; if (params instanceof SEventErrRecordExample) { orgNo = ((SEventErrRecordExample) params).getOredCriteria().get(0).getAllCriteria().stream() .filter(el -> el.getCondition().equalsIgnoreCase("ORG_NO =")) .map(el -> el.getValue().toString()).findFirst().orElse(null); } else if (params instanceof SEventErrRecordPO) { orgNo = ((SEventErrRecordPO) params).getOrgNo(); } else if (params instanceof Map) { orgNo = ((Map) params).get("orgNo").toString(); } else { orgNo = null; } if (StringUtils.isEmpty(orgNo)) { return baseTableName; } // 添加后缀 StringBuilder tableBuilder = new StringBuilder(baseTableName).append("_").append(orgNo); return tableBuilder.toString(); } } #### 参与贡献 1. https://gitee.com/xujian_jason/mybatis-subtable