# mybatis-subtable
**Repository Path**: sakakokiya1/mybatis-subtable
## Basic Information
- **Project Name**: mybatis-subtable
- **Description**: MyBatis分表插件
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 25
- **Created**: 2023-01-25
- **Last Updated**: 2023-01-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## mybatis-subtable
MyBatis分表插件,对MyBatis代码无侵入,不改变对MyBatis的使用习惯。
## 使用示例
1、mybatis-config.xml配置文件添加插件
```xml
```
2、需要分表的Mapper/Dao类添加`@SubTable`注解,使用`strategyClass`指定分表策略类
```java
// LongStrategy:自定义分表策略类
@SubTable(strategyClass=LongStrategy.class)
```
3、不需要分表的方法添加`@SubTableIgnore`注解
```java
@SubTableIgnore
List getList();
```
## 分表策略
- 自定义分表策略需要实现`org.jwxa.mybatis.subtable.strategy.Strategy`接口,实现`getFinalTable`获取最终表名方法。
- `StrategyUtil`工具类提供常用分表策略方法。
**使用示例:**使用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);
}
}
```
# 测试示例说明
1. 执行`src/test/resources/initsql.sql`初始化数据库
1. 运行MyBatis测试修改`mybatis-config.xml`数据库配置信息,测试类:`org.jwxa.mybatis.subtable.test.DeviceDaoTest`
1. 运行Spring-MyBatis测试修改`jdbc.properties`数据库配置信息,测试类:`org.jwxa.mybatis.subtable.test.spring.UserDaoTest`