接着上一篇:https://www.cnblogs.com/wwjj4811/p/14597828.html
环境搭建
按照业务把单个数据库进行划分,专库专表。
创建user_db数据库,数据库中新增t_user表
CREATE TABLE `t_user` (
`user_id` bigint(20) NOT NULL,
`username` varchar(255) ,
`ustatus` varchar(50) ,
PRIMARY KEY (`user_id`) USING BTREE
) ;
实体类:
@Data
@TableName("t_user")
public class User {
@TableId
private Long userId;
private String username;
private String ustatus;
}
Mapper接口:
public interface UserMapper extends BaseMapper<User> {
}
配置垂直分库策略
修改application.properties(下面只展示关于垂直分库,其余配置省略)
#数据源名称
spring.shardingsphere.datasource.names=m1,m2,m0
#------------------------------垂直拆分------------------------------------#
#数据源m0配置
spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m0.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m0.url=jdbc:mysql://localhost:3306/user_db?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m0.username=root
spring.shardingsphere.datasource.m0.password=1234
#指定t_user表分布情况
spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=m$->{0}.t_user
#指定course表里面主键生成策略
spring.shardingsphere.sharding.tables.t_user.key-generator.column=user_id
spring.shardingsphere.sharding.tables.t_user.key-generator.type=SNOWFLAKE
#指定表分片策略 约定cid值偶数添加到course_1表,奇数添加到course_2表
spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.sharding-column=user_id
spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.algorithm-expression=t_user
#-------------------------------------------------------------------------#
测试
@Resource
UserMapper userMapper;
@Test
void userAdd(){
User user = new User();
user.setUsername("张三");
user.setUstatus("1");
userMapper.insert(user);
}
@Test
void userFind(){
userMapper.selectOne(new QueryWrapper<User>().eq("ustatus","1"));
}
新增:
查询: