springboot如何使用yml文件方式配置shardingsphere
作者:紫荆-往往
这篇文章主要介绍了springboot如何使用yml文件方式配置shardingsphere问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
1、创建maven项目
引入依赖包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>2、配置yml文件
spring:
shardingsphere:
datasource:
names: m1
m1:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://ip:3306/test?serverTimezone=GMT%2B8
driver-class-name: com.mysql.jdbc.Driver
username: 用户名
password: 密码
# m2:
# type: com.alibaba.druid.pool.DruidDataSource
# url: jdbc:mysql://10.0.5.118:3306/test2?serverTimezone=GMT%2B8
# driver-class-name: com.mysql.jdbc.Driver
# username: root
# password: dcg123456
sharding:
tables:
course:
actual-data-nodes: m1.course_$->{1..2}
key-generator:
column: cid
type: SNOWFLAKE
# databaseStrategy: #分库策略
# inline:
# shardingColumn: cid
# algorithmExpression: m$->{cid % 2 +1}
#分表策略
table-strategy:
inline:
sharding-column: cid
algorithm-expression: course_$->{cid%2+1}
#打印sql
props:
sql:
show: true3、创建course实体类及dao层代码
package com.lifwe.shardingsphere.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author lifwe
* @version 1.0
* @ClassName :Course
* @Description :
* @date 2021/3/5 20:27
*/
@Data
@NoArgsConstructor
@ToString
public class Course {
private Long cid;
private String cname;
private Long userId;
private String cstatus;
}package com.lifwe.shardingsphere.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lifwe.shardingsphere.entity.Course;
import org.apache.ibatis.annotations.Mapper;
/**
* @author lifwe
* @version 1.0
* @ClassName :CourseDao
* @Description :
* @date 2021/3/5 20:32
*/
@Mapper
public interface CourseDao extends BaseMapper<Course> {
}4、进行junit测试



上图所指示,两个分片表插入前是无数据的,执行测试用例,
日志为:

查看两个分片表数据,
结果如下所示:


总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
