ShardingJdbc:垂直切分

接着上一篇: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
) ;

image-20210330174904453

实体类:

@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"));
    }

新增:

image-20210330175551544

查询:

image-20210330175625992

原文地址:https://www.cnblogs.com/wwjj4811/p/14598033.html