上一篇完成了实体类及配置文件编写后,现在进行测试。
1 创建测试类
在 test 目录下创建测试类 TestOrder,并引用 OrderRepository 接口对象,因为要通过该接口向数据库插入数据。
使用注解 @SpringBootTest ,指定 SpringBoot 的启动类。
在测试类中插入20条 orders 记录.
package com.myjdbc;
import com.myjdbc.entity.Orders;
import com.myjdbc.repository.OrderRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ShardingJdbc.class)
public class TestOrder {
@Resource
private OrderRepository orderRepository;
@Test
public void TestAdd(){
for (int i = 0; i < 20;) {
Orders orders = new Orders();
orders.setId(i++);
orders.setCustomer("张三" + i);
orders.setAmount((float) (Math.random() * 1000));
orders.setNumber((int)(Math.random() * 10));
orderRepository.save(orders);
}
}
}
2 创建启动类
因为要使用 springboot 的测试类,还需要创建一个 springboot 的启动类。
因为不是真的要启动 springboot,这里只需要创建一个空类即可。
3 运行测试程序
3.1 控制台
执行测试后,查看控制台输出:
数据表、数据表的分片策略、分片的字段,都在控制台里能找到。
插入数据前先查询
在执行插入语句之前,先进行一次查询,一次数据库操作分为三条语句:
- Logic SQL 逻辑SQL语句,
- 如 select orders0_.id as id1_0_0_, orders0_.amount as amount2_0_0_, orders0_.customer as customer3_0_0_, orders0_.number as number4_0_0_ from orders orders0_ where orders0_.id=?
- SQLStatement
- 这里展示了SQL执行过程中使用到的上下文
- Actual SQL 实际执行的SQL语句及在哪个分片上进行的操作
- 如 ds0 ::: select orders0_.id as id1_0_0_, orders0_.amount as amount2_0_0_, orders0_.customer as customer3_0_0_, orders0_.number as number4_0_0_ from orders orders0_ where orders0_.id=? ::: [0]
- 这条查询是在分片 ds0 进行的
3.2 数据库
查看数据库的执行结果
分片1
分片2