数据库分表
只支持单列的分表
1. 注解
1.1 @SplitTable 实体上的分表注解
用于标明此实体类是分表实体类,需要指定一个value,就是分表分隔器
1.2 @SplitTableKey 实体上的分表字段注解
用于标明此字段是分表分隔字段,只能设置一个字段
2.示例
2.1 分表实体类
java
@Data
@SplitTable(SysUserSplitter.class)
public class SysUser {
@TableId
private Integer id;
@SplitTableKey
private Integer groupId;
private String nickname;
private String username;
}
2.2 分表分隔器
java
public class SysUserSplitter implements TableSplitter {
@Override
public boolean support(Class<?> type) {
return type == Integer.class || type == int.class;
}
@Override
public String split(String sourceTableName, Object splitValue) {
Integer groupId = (Integer) splitValue;
//分成10个表
return sourceTableName + "_" + groupId % 10;
}
}
3. 使用
其他操作和普通操作没有区别;但是条件等一定要有分表key的条件
java
SysUser sysUser = sysUserMapper.get(where -> {
where.eq(SysUser::getId, 1).eq(sysUser::getGroupId, 12);
});