你要的分表+多数据源 Demo 源码来了

题外话,最近一直有朋友加我WX,咨询sharding jdbc的事,说实话挺内疚的,只写了个文章,没把源码放出来,这次把源码补上。

正文

关于分表+多数据源,之前写了一篇,那篇文章介绍了:

  1. 如何集成sharding jdbc;
  2. 分表后,为什么要使用多数据源?
  3. sharding jdbc如何集成多数据源

不过,由于配置较多,容易出错,很多读者出现了各种奇怪的错误,然后开始怀疑这种方案是否行的通😂

所以,我又重新写了个完整的demo,从数据库到测试用例,均已写好,请放心使用。源码地址如下:

下载后,使用idea打开如下:

如何运行项目?

1. 初始化数据库

运行sharding.sql,会创建两个数据库:no_shardingorder_sharding


├── no_shrding
│   ├── user           用户表
│── order_sharding
│   ├── user_order_0   用户订单表
│   ├── user_order_1   用户订单表
   
复制代码

2. 修改数据库信息

将项目中resources目录下的application.yml文件复制一份为application-dev.yml,在application-dev.yml中,将数据源信息修改为自己的。

3. 运行测试类

测试类中,激活了dev的配置文件,就是使用第2步添加的application-dev.yml

@Slf4j
@SpringBootTest(properties = "spring.profiles.active=dev")
class ShardingJdbcDemoApplicationTests {

    @Autowired
    private UserService userService;
    @Autowired
    private OrderService orderService;

    @Test
    void shardingJdbcTest() {
        // 使用默认数据源(即不分表的数据源)
        User dudiao = userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getName, "读钓"));

        // 使用@DS,切换到分表数据源
        List<OrderorderList = orderService.getOrderByUser(dudiao.getId());

        log.info("==> \n用户:{} \n订单:{}", dudiao, orderList);
        Assert.isTrue(orderList.size() == 1"订单数不正确!");
    }

}
复制代码

运行测试类:

整个示例比较简单:用户的订单表进行了分表,先根据用户名称查询用户id,再去查询该用户的订单。麻雀虽小五脏俱全。


各位客官且慢,原创不易,点个赞再走呗。关注公众号 【读钓的YY】 可以白嫖😘,别下次一定了,就这次 🤣

分类:
后端
标签: