162人参与 • 2025-05-28 • ar
| 节点角色 | 主机地址 | 端口 | 用户名 | 密码 | 库名 |
|---|---|---|---|---|---|
| master | 192.168.40.128 | 3306 | root | root@123456 | db_demo |
| slave | 192.168.40.129 | 3306 | root | root@123456 | db_demo |
create table `user` ( `id` bigint not null, `client_id` bigint not null, `name` varchar(255) character set utf8mb4 collate utf8mb4_general_ci null default null, `age` int null default null, primary key (`id`) using btree ) engine = innodb character set = utf8mb4 collate = utf8mb4_general_ci row_format = dynamic;

从节点刷新查看

复用之前的 user 表操作代码即可
application.yml
# 主从配置 读写分离
server:
port: 8081
spring:
main:
# 一个实体类对应两张表,覆盖
allow-bean-definition-overriding: true
shardingsphere:
datasource:
names: m1,s1 # 主库 从库
m1:
type: com.alibaba.druid.pool.druiddatasource
driver-class-name: com.mysql.cj.jdbc.driver
url: jdbc:mysql://192.168.40.128:3306/db_demo?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=utc
username: root
password: root@123456
s1:
type: com.alibaba.druid.pool.druiddatasource
driver-class-name: com.mysql.cj.jdbc.driver
url: jdbc:mysql://192.168.40.129:3306/db_demo?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=utc
username: root
password: root@123456
sharding:
tables:
user:
# 分表策略 固定分配到主库的user表 即 m1.user
actual-data-nodes: m1.user
# 主库从库规则定义
master-slave-rules:
m1:
# 主库
master-data-source-name: m1
# 从库
slave-data-source-names: s1
props:
# 打印sql日志
sql:
show: true
@test
void insert() {
for (int i = 0; i < 5; i++) {
user user = new user();
user.setid(i + 1);
user.setname("user_" + user.getid());
user.setclientid(10000);
user.setage(18 + i);
usermapper.insert(user);
}
}操作的必须是主库 对应的数据源 m1

主库查看

从库查看

更新测试修改前

修改 id=5 的记录的 name, user_5 => tom
@test
void update() {
user user = new user();
user.setid(5);
user.setname("tom");
usermapper.updatebyid(user);
}操作的必须是主库 对应的数据源 m1

查看主库

查看从库

删除 id=5 的记录
@test
void delete() {
usermapper.deletebyid(5);
}操作的必须是主库 对应的数据源
m1

查看主库

查看从库

指定id查询,查找id为 2、3 的记录
@test
void selectbyid() {
list<user> list = usermapper.selectlist(new querywrapper<user>().in("id", 2, 3));
system.out.println(jsonarray.tojsonstring(list));
}操作的必须是从库 对应的数据源 s1

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论