sharding-jdbc实现垂直分库

对 t_user的操作在数据库 user_db中进行

1、需求分析

clipboard

2、创建数据库和表(略)

clipboard

3、编写代码

(1)创建实体类User 和mapper

复制代码
@Data
@TableName("t_user")
public class User {

    private Long userId;

    private String username;

    private String ustatus;
}


public interface UserMapper extends BaseMapper<User> {
}
复制代码

 

(2)配置垂直分库

复制代码
#sharding-jdbc 分片策略
# 数据源名称,多数据源以逗号分隔
# 水平分库,所以要配置多数据源
spring.shardingsphere.datasource.names=m1,m2,m0

#一个实体类对应两张表
spring.main.allow-bean-definition-overriding=true

# 第一个数据源
# 数据库连接池
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
#数据库驱动类名
spring.shardingsphere.datasource.m1.driver-class-name= com.mysql.cj.jdbc.Driver
# 数据库 URL 连接
spring.shardingsphere.datasource.m1.url=jdbc:mysql://localhost:3306/edu_db_1?serverTimezone=GMT%2B8
# 数据库用户名
spring.shardingsphere.datasource.m1.username= root
# 数据库密码
spring.shardingsphere.datasource.m1.password=houchen


# 第二个数据源
# 数据库连接池
spring.shardingsphere.datasource.m2.type=com.alibaba.druid.pool.DruidDataSource
#数据库驱动类名
spring.shardingsphere.datasource.m2.driver-class-name= com.mysql.cj.jdbc.Driver
# 数据库 URL 连接
spring.shardingsphere.datasource.m2.url=jdbc:mysql://localhost:3306/edu_db_2?serverTimezone=GMT%2B8
# 数据库用户名
spring.shardingsphere.datasource.m2.username= root
# 数据库密码
spring.shardingsphere.datasource.m2.password=houchen


# 第三个数据源
# 数据库连接池
spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.DruidDataSource
#数据库驱动类名
spring.shardingsphere.datasource.m0.driver-class-name= com.mysql.cj.jdbc.Driver
# 数据库 URL 连接
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=houchen


#配置user_db数据库里面 t_user 专库专表
spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=m$->{0}.t_user

#指定 t_user 表中主键的生成策略  SNOWFLAKE:雪花算法
spring.shardingsphere.sharding.tables.t_user.key-generator.column = user_Id
spring.shardingsphere.sharding.tables.t_user.key-generator.type =SNOWFLAKE


#打开sql的输出日志
spring.shardingsphere.props.sql.show = true
复制代码

 

(3)测试

//测试垂直分库
@Test
public void testUserDB(){
    User user =new User();
    user.setUsername("luccy");
    user.setUstatus("c");
    userMapper.insert(user);
}

 

clipboard

posted @   青岑  阅读(546)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
主题色彩