2022版shardingsphere4.1.1结合mybatis-plus进行简单依赖YML文件进行分片、自定义生成主键、自定义水平分片的相关策略
ShardingSphere 可以通过 YAML 文件进行配置,以下是一个基本的分片配置示例:
sharding:
# 配置数据源
datasource:
names: ds0,ds1
ds0:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/ds0
username: root
password:
ds1:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/ds1
username: root
password:
# 配置分片规则
tables:
t_order:
actualDataNodes: ds${0..1}.t_order_${0..1}
databaseStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: database_inline
tableStrategy:
standard:
shardingColumn: order_id
shardingAlgorithmName: table_inline
# 配置分片算法
shardingAlgorithms:
database_inline:
type: INLINE
props:
algorithm-expression: ds${user_id % 2}
table_inline:
type: INLINE
props:
algorithm-expression: t_order_${order_id % 2}
# 配置属性
props:
sql-show: true
在这个配置文件中,我们定义了两个数据源 ds0
和 ds1
,并且为 t_order
表配置了分库和分表的规则。通过 database_inline
和 table_inline
分片算法,我们将 user_id
和 order_id
字段用于分库和分表。
在 Java 应用中,你需要将此 YAML 文件加载到 ShardingSphere 的配置中,并初始化数据源。以下是一个简化的 Java 配置类:
@Configuration
public class ShardingSphereConfig {
@Bean
public DataSource dataSource() throws SQLException {
// 读取YAML配置文件
FileYamlDataSourceConfigurationYamlDataSourceConfiguration =
YamlShardingSphereDataSourceFactory.createDataSource(yamlConfigFile);
return dataSourceConfigurationYaml.getDataSource();
}
}
在这个配置类中,我们定义了一个 Bean,它会创建并返回一个 ShardingSphere 配置好的 DataSource
对象。这个 DataSource
可以被 MyBatis-Plus 使用,就像使用任何其他普通的 DataSource
一样。
评论已关闭