【sharding-jdbc配置以及例子】
一、一个数据库不同的表(分表)
(1)POM
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!-- Druid连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.20</version></dependency><!-- Mysql驱动依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- MybatisPlus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency><!-- Sharding-JDBC --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.0.0-RC1</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.13</version></dependency></dependencies>
(2)配置信息
application.yml
server:port: 8081
spring:profiles:include: shardingjdbc
application-shardingjdbc.properties
spring.main.allow-bean-definition-overriding=true
#配置数据源,给数据源起名g1,g2可以配置多个数据源
spring.shardingsphere.datasource.names=g1#配置数据源具体内容
spring.shardingsphere.datasource.g1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.g1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.g1.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useUnicode=true&useSSL=false&serverTimezone=UTC
spring.shardingsphere.datasource.g1.username=root
spring.shardingsphere.datasource.g1.password=root#配置表的分布,策略
spring.shardingsphere.sharding.tables.user.actual-data-nodes=g1.user_$->{0..1}#指定user表 主键user_id 生成策略为SNOWFLAKE
spring.shardingsphere.sharding.tables.user.key-generator.column=user_id
spring.shardingsphere.sharding.tables.user.key-generator.type=SNOWFLAKE#指定分片策略 user_id
spring.shardingsphere.sharding.tables.user.table-strategy.inline.sharding-column=user_id
spring.shardingsphere.sharding.tables.user.table-strategy.inline.algorithm-expression=user_$->{user_id % 2}# 打印sql输出日志
spring.shardingsphere.props.sql.show=true
(3) 配置实体
package com.shard.shardingdemo.demos.entity;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.math.BigInteger;
@Data
@TableName("user")
public class User implements java.io.Serializable{@TableIdprivate Long user_id;private String name;
}
(4) 写测试类
@Testvoid contextLoads() {String name="一切顺利";
// Long user_id=2l;
// userService.addUser(user_id,name);User user = new User();
// user.setUser_id(user_id);user.setName(name);userMapper.insert(user);}