原文网址:Sharding-JDBC--整合MybatisPlus多数据源--方法/实例_IT利刃出鞘的博客-CSDN博客
简介
说明
本文用实例介绍Sharding-JDBC与MybatisPlus多数据源的整合。
为什么有了sharding还要配置多数据源?
ShardingSphere是将多个数据源合并为一个统一的逻辑数据源。因此即使不分库分表的部分,不配置分片规则ShardingSphere即无法精确的断定应该路由至哪个数据源。 ShardingSphere提供了下边两种变通的方式(本文介绍第二种)
方法一:配置default-data-source
凡是在默认数据源中的表可以无需配置在分片规则中,ShardingSphere将在找不到分片数据源的情况下将表路由至默认数据源。
缺点:若表不在默认数据源中,还是需要将表配置到分片规则中。除非将所有不需要进行分片的表都放在默认数据源里,那么倒是可以这么做,否则你就得一个一个配置表的分片规则了。
方法二:将不参与分库分表的数据源独立于ShardingSphere之外
在应用中使用多个数据源分别处理分片和不分片的情况。
优点:将不分片的数据源独立出来,开发者可以通过多数据源自主选择处理不同情况,仅需要简单配置后加个注解即可。
mybatis-plus的动态数据源
本文使用mybatis-plus的动态数据源来进行演示。使用它还有如下优点:
sharding jdbc对一些语法不支持,官方文档里说的比较笼统,如下图:
像insert into ... select这些语法是不支持的(对于没有涉及到分表的语句,也有同样的限制)例如,项目里有个SQL:insert into user_temp select * from user;在集成了sharding jdbc后,即使user表没有配置分表,执行该SQL也会报错。
实战
说明:本处实战与此文(Sharding-JDBC--分库分表--使用/教程/实例_IT利刃出鞘的博客-CSDN博客)用的同一个工程。
建库建表
建库
创建两个库:sharding-jdbc0、sharding-jdbc1
建表
在上边两个库里按下边这个结构创建表,以t_order_0和t_order_1命名。另外,在sharding-jdbc0中单独创建一个t_order,也用下边的建表语句。
上边是文章的部分内容,为便于维护,全文已转移到此网址:Sharding-JDBC-整合MybatisPlus多数据源-方法/实例 - 自学精灵