日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4、ShardingSphere 之 Sharding-JDBC 实现垂直分库

發(fā)布時間:2025/3/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4、ShardingSphere 之 Sharding-JDBC 实现垂直分库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 實現(xiàn)垂直分庫,專庫專表

實現(xiàn)目標,用戶查詢用戶信息的時候,只操作user_db中t_user表

2 創(chuàng)建數(shù)據(jù)庫

CREATE SCHEMA `userdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;

3 創(chuàng)建數(shù)據(jù)表

CREATE TABLE `userdb`.`t_user` (`user_id` BIGINT NOT NULL,`user_name` VARCHAR(45) NOT NULL,`u_status` VARCHAR(45) NOT NULL,PRIMARY KEY (`user_id`));

4 創(chuàng)建po

package com.ccb.sharding.po;import com.baomidou.mybatisplus.annotation.TableName;@TableName("t_user") public class User {private Long userId;private String userName;private String uStatus;public Long getUserId() {return userId;}public void setUserId(Long userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getuStatus() {return uStatus;}public void setuStatus(String uStatus) {this.uStatus = uStatus;}@Overridepublic String toString() {return "User{" +"userId=" + userId +", userName='" + userName + '\'' +", uStatus='" + uStatus + '\'' +'}';} }

5 創(chuàng)建 UserMapper 接口

package com.ccb.sharding.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ccb.sharding.po.User; import org.springframework.stereotype.Repository;@Repository public interface UserMapper extends BaseMapper<User> {}

6 創(chuàng)建application.properties配置分片策略 專庫專表

# sharding-JDBC分片策略(垂直分庫) # 配置數(shù)據(jù)源,給數(shù)據(jù)源命名 # 垂直分庫,配置數(shù)據(jù)源 spring.shardingsphere.datasource.names=ds0# 配置數(shù)據(jù)源具體內容,連接池、驅動、地址、用戶名和密碼 spring.shardingsphere.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.cj.jdbc.Driver spring.shardingsphere.datasource.ds0.url=jdbc:mysql://localhost:3306/userdb?serverTimezone=GMT%2B8 spring.shardingsphere.datasource.ds0.username=root spring.shardingsphere.datasource.ds0.password=chengwen# 一個實體類對應兩張表,覆蓋 spring.main.allow-bean-definition-overriding=true# 配置user_db數(shù)據(jù)庫里面t_user 專庫專表 spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=ds$->{0}.t_user# 配置user_db數(shù)據(jù)庫里面 t_user 表里面主鍵 user_id 生成策略 SNOWFLAKE 雪花算法 spring.shardingsphere.sharding.tables.t_user.key-generator.column=user_id spring.shardingsphere.sharding.tables.t_user.key-generator.type=SNOWFLAKE# 指定表分片策略 約定user_id的值添加到t_user表 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# 打印sql輸出日志 spring.shardingsphere.props.sql.show=true

7 Test

package com.ccb.sharding;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ccb.sharding.mapper.UserMapper; import com.ccb.sharding.po.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest class ShardingApplicationTests {@AutowiredCourseMapper courseMapper;@AutowiredUserMapper userMapper;// ================= 測試水平分表 ======================@Testpublic void addUser() {User user = new User();user.setUserName("Tom");user.setuStatus("A");userMapper.insert(user);}@Testpublic void getUser(){QueryWrapper queryWrapper = new QueryWrapper();queryWrapper.eq("user_id",482828647158251521L);User cuser = userMapper.selectOne(queryWrapper);System.out.println(cuser);} }

8 Test result

專庫專表 新增
專庫專表 查詢

總結

以上是生活随笔為你收集整理的4、ShardingSphere 之 Sharding-JDBC 实现垂直分库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。