<!--分表策略,sharding-column 这里根据 id (这列属性不能是String,只能是整型)分表,AdminSingleKeyTableShardingAlgorithm 分表算法-->
<sharding:standard-strategy id="tableShardingStrategy" sharding-column="id"
precise-algorithm-class="com.study.algorithm.AdminSingleKeyTableShardingAlgorithm"/>
<sharding:data-source id="shardingDataSource">
<!--因为我只有一张表。所以就只需要配置一个dataSource-->
<sharding:sharding-rule data-source-names="dataSource" default-data-source-name="dataSource">
<sharding:table-rules>
<!--logic-tables逻辑表名: 逻辑表名 其实就是 sql 中 写的表名称-->
<!--actual-data-nodes真实表名-->
<sharding:table-rule logic-table="t_manager"
actual-data-nodes="dataSource.t_manager_0,dataSource.t_manager_1"
table-strategy-ref="tableShardingStrategy"
generate-key-column="id" // 定义生成key 的主键是那一列
column-key-generator-class="com.study.algorithm.IdKeyGenerator" // 定义 key 的生成策略
/>
</sharding:table-rules>
<sharding:binding-table-rules>
<!--logic-tables逻辑表名-->
<sharding:binding-table-rule logic-tables="t_manager"/>
</sharding:binding-table-rules>
</sharding:sharding-rule>
</sharding:data-source>
IdKeyGenerator 类代码如下,注意 是 需要实现
KeyGenerator (import io.shardingjdbc.core.keygen.KeyGenerator;) 接口
具体代码如下:
package com.study.algorithm;
import io.shardingjdbc.core.keygen.KeyGenerator;
import java.util.Random;
public class CommonIdKeyGenerator implements KeyGenerator {
@Override
public Number generateKey() {
Random random = new Random();
int rom = random.nextInt(100);
return rom;
}
}