Sharding Sphere3.1.0下的springboot+Hikari

一、pom依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<dependency>
      <groupId>io.shardingsphere</groupId>
      <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
      <version>3.1.0</version>
 </dependency>

一、配置文件

#数据库名称不可以带下划线:_,默认识别第一个DB
sharding.jdbc.datasource.names=springcloud,ds0,ds1

sharding.jdbc.datasource.springcloud.type=com.zaxxer.hikari.HikariDataSource
sharding.jdbc.datasource.springcloud.driver-class-name=com.mysql.cj.jdbc.Driver
sharding.jdbc.datasource.springcloud.jdbcUrl=jdbc:mysql://localhost:3306/springcloud
sharding.jdbc.datasource.springcloud.username=root
sharding.jdbc.datasource.springcloud.password=xiaochao

#数据库名称不可以带下划线:_,ds0可以,ds_0不可以,报错
sharding.jdbc.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.cj.jdbc.Driver
sharding.jdbc.datasource.ds0.jdbcUrl=jdbc:mysql://localhost:3306/ds_0
sharding.jdbc.datasource.ds0.username=root
sharding.jdbc.datasource.ds0.password=xiaochao

#数据库名称不可以带下划线:_,ds1可以,ds_1不可以,报错
sharding.jdbc.datasource.ds1.type=com.zaxxer.hikari.HikariDataSource
sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.cj.jdbc.Driver
sharding.jdbc.datasource.ds1.jdbcUrl=jdbc:mysql://localhost:3306/ds_1
sharding.jdbc.datasource.ds1.username=root
sharding.jdbc.datasource.ds1.password=xiaochao

#这个配置是啥有待验证
sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=user_id
sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds$->{user_id % 2}

#数据库名称不可以带下划线:_,ds$可以,ds_$不可以,报错
sharding.jdbc.config.sharding.tables.t_order.actual-data-nodes=ds$->{0..1}.t_order_$->{0..1}
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.algorithm-expression=t_order_$->{order_id % 2}
sharding.jdbc.config.sharding.tables.t_order.key-generator-column-name=order_id
sharding.jdbc.config.sharding.tables.t_order_item.actual-data-nodes=ds$->{0..1}.t_order_item_$->{0..1}
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order_item.table-strategy.inline.algorithm-expression=t_order_item_$->{order_id % 2}
sharding.jdbc.config.sharding.tables.t_order_item.key-generator-column-name=order_item_id

#如果有关联表没配置绑定有可能会出现笛卡尔积
sharding.jdbc.config.sharding.binding-tables[0]=t_order,t_order_item
sharding.jdbc.config.sharding.props.sql.show=true

注意:

  1. names后的数据库名不可以带有下划线例如:ds_0,否则报错
  2. 做了分库分表配置的会去db0,db1库中找;
  3. 没有做分库分表的会去sharding.jdbc.datasource.names的第一个库里找:springcloud

SpringBoot 使用Sharding-JDBC进行分库分表及其分布式ID的生成

转载于:https://www.jianshu.com/p/0a08a854f1ea

猜你喜欢

转载自blog.csdn.net/weixin_33796177/article/details/91173019