引入pom文件
org.apache.shardingsphere sharding-jdbc-core 4.0.0-RC2 org.apache.shardingsphere sharding-jdbc-spring-namespace 4.0.0-RC2spring配置
<?xml version="1.0" encoding="UTF-8"?><!-- <bean id="preciseModuloTableShardingAlgorithm" class="com.vbao.sharding.DateShardingAlgorithm" />
<sharding:standard-strategy id="tableShardingStrategy" sharding-column="create_date" precise-algorithm-ref="preciseModuloTableShardingAlgorithm" />
<sharding:data-source id="shardingDataSource">
<sharding:sharding-rule data-source-names="dataSource">
<sharding:table-rules>
<sharding:table-rule logic-table="t_order"
actual-data-nodes="dataSource.t_order_201910,dataSource.t_order_201911"
table-strategy-ref="tableShardingStrategy" />
</sharding:table-rules>
</sharding:sharding-rule>
</sharding:data-source> -->
分片策略
/**
* 精确分片算法
*
* @param availableTargetNames 目标数据源名称或数据表名称,注意:是逻辑数据源名或逻辑数据表名,来自SQL
* @param shardingValue 分片值,来自SQL中分片字段对应的值
* @return 真实数据源名称或数据表名称
*/
@Override
public String doSharding(Collection<String> tableNames,
PreciseShardingValue<Date> shardingValue) {
if (CollectionUtils.isEmpty(tableNames)){
throw new IllegalArgumentException("表不存在,请先创建表");
}
String d = DateUtil.dateFromatString(shardingValue.getValue(), "yyyyMM");
for (String each : tableNames) {
if (each.endsWith(d)) {
System.out.println("---------->" + each);
return each;
}
}
throw new IllegalArgumentException("表不存在,请先创建表");
}
}