数据库准备
order_db_1
├── t_order_1
└── t_order_2
└── t_dict
order_db_2
├── t_order_1
└── t_order_2
└── t_dict
user_db
└── t_user
执行sql
#创建数据库
CREATE DATABASE `user_db` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
#建表
USE user_db;
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`user_id` BIGINT (20) NOT NULL COMMENT '用户id',
`fullname` VARCHAR (255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户姓名',
`user_type` CHAR (1) DEFAULT NULL COMMENT '用户类型',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = INNODB CHARACTER
SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
在test2文件中加入
# 分表配置
# 数据源名称,多数据源以逗号分隔
spring.shardingsphere.datasource.names=ds1,ds2,udb
# 数据库连接池类名称
spring.shardingsphere.datasource.udb.type=com.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名
spring.shardingsphere.datasource.udb.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库 url 连接
spring.shardingsphere.datasource.udb.url=jdbc:mysql://localhost:3306/user_db?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# 数据库用户名
spring.shardingsphere.datasource.udb.username=root
# 数据库密码
spring.shardingsphere.datasource.udb.password=root123
spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=udb.t_user
java测试代码
package com.itheima.sharding;
import com.itheima.sharding.entity.TDict;
import com.itheima.sharding.entity.TOrder;
import com.itheima.sharding.entity.TUser;
import com.itheima.sharding.mapper.TDictMapper;
import com.itheima.sharding.mapper.TOrderMapper;
import com.itheima.sharding.mapper.TUserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.math.BigDecimal;
import java.util.Random;
@SpringBootTest
public class MyTest {
@Autowired
private TUserMapper tUserMapper;
@Test
public void test04(){
TUser user = TUser.builder().userId(133l).userType("1")
.fullname("laozhang").build();
tUserMapper.insert(user);
}
}
运行完查看数据库数据