package com.gupaoedu.example.shardingjdbcbasicexample;
import org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* 咕泡学院,只为更好的你
* 咕泡学院-Mic: 2082233439
* http://www.gupaoedu.com
* //所有的开源项目,一定会有一个example的模块。
**/
public class ShardingDatabaseAndTableConfiguration {
private static Map<String, DataSource> createDataSourceMap(){
//代表真实的数据源
Map<String,DataSource> dataSourceMap=new HashMap<>();
dataSourceMap.put("ds0",DataSourceUtil.createDataSource("shard01"));
dataSourceMap.put("ds1",DataSourceUtil.createDataSource("shard02"));
return dataSourceMap;
}
//创建分片规则
// * 针对数据库
// * 针对表
//* 一定要配置分片键
//* 一定要配置分片算法
//* 完全唯一id的问题
private static ShardingRuleConfiguration createShardingRuleConfiguration(){
ShardingRuleConfiguration configuration=new ShardingRuleConfiguration();
//把逻辑表和真实表的对应关系添加到分片规则配置中
configuration.getTables().add(getOrderTableRuleConfiguration());
//设置数据库分库规则
configuration.setDefaultDatabaseShardingStrategy(
new StandardShardingStrategyConfiguration
("user_id","db-inline"));
Properties properties=new Properties();
properties.setProperty("algorithm-expression","ds${user_id%2}");
//设置分库策略
configuration.getShardingAlgorithms().
put("db-inline",new ShardingSphereAlgorithmConfiguration("INLINE",properties));
//设置表的分片规则(数据的水平拆分)
configuration.setDefaultTableShardingStrategy(new StandardShardingStrategyConfiguration
("order_id","order-inline"));
//设置分表策略
Properties props=new Properties();
props.setProperty("algorithm-expression","t_order_${order_id%2}");
configuration.getShardingAlgorithms().put("order-inline",
new ShardingSphereAlgorithmConfiguration("INLINE",props));
//设置主键生成策略
// * UUID
// * 雪花算法
Properties idProperties=new Properties();
idProperties.setProperty("worker-id","123");
configuration.getKeyGenerators().put("snowflake",new ShardingSphereAlgorithmConfiguration(
"SNOWFLAKE",idProperties));
return configuration;
}
//配置逻辑表以及表的id策略
//逻辑表和真实表的对应关系
private static ShardingTableRuleConfiguration getOrderTableRuleConfiguration(){
ShardingTableRuleConfiguration tableRuleConfiguration=
new ShardingTableRuleConfiguration("t_order","ds${0..1}.t_order_${0..1}");
tableRuleConfiguration.setKeyGenerateStrategy(new KeyGenerateStrategyConfiguration("order_id","snowflake"));
return tableRuleConfiguration;
}
public static DataSource getDatasource() throws SQLException {
return ShardingSphereDataSourceFactory
.createDataSource(createDataSourceMap(), Collections.singleton(createShardingRuleConfiguration()),new Properties());
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
springboot集成shardingJDBC分库分表demo工程,亲测有效,配置好mysql连接四要素,即可运行 使用方式见博客:https://maoqizhi.blog.csdn.net/article/details/122793433?spm=1001.2014.3001.5502
资源推荐
资源详情
资源评论
收起资源包目录
springboot集成shardingJDBC分库分表demo工程【天天打码,天天进步】 (480个子文件)
$CACHE_FILE$ 1KB
$CACHE_FILE$ 1KB
$CACHE_FILE$ 1KB
MybatisPlusGeneratorConfig.class 6KB
TOrderIntervalServiceImpl.class 4KB
StandardModuloShardingTableAlgorithm.class 4KB
ShardingDatabaseAndTableConfiguration.class 4KB
OrderRepositoryImpl.class 4KB
TOrderBoundaryRange.class 4KB
StandardModTableShardAlgorithm.class 4KB
TOrderInterval.class 4KB
TOrderVolumeRange.class 3KB
TOrderStandard.class 3KB
TOrder.class 3KB
TOrderBoundaryRangeServiceImpl.class 3KB
TOrderVolumeRangeServiceImpl.class 3KB
OrderServiceImpl.class 3KB
TOrderStandardServiceImpl.class 3KB
TOrderServiceImpl.class 3KB
Order.class 3KB
ParserManager.class 2KB
ParserController.class 1KB
DataSourceUtil.class 1KB
ExampleMain.class 1KB
TOrderBoundaryRangeController.class 1KB
TOrderVolumeRangeController.class 1KB
TOrderIntervalController.class 1KB
TOrderStandardController.class 1KB
TOrderController.class 1013B
WordParser.class 1004B
ShardingExampleApplication.class 891B
ShardingJdbcBasicExampleApplication.class 851B
TOrderIntervalMapper.class 694B
TOrderBoundaryRangeMapper.class 689B
TOrderVolumeRangeMapper.class 681B
TxtParser.class 677B
TOrderStandardMapper.class 668B
JsonParser.class 667B
XmlParser.class 662B
ShardingJdbcBasicExampleApplicationTests.class 649B
TOrderMapper.class 635B
LuckdrawRedisApplicationTests.class 578B
App.class 537B
ITOrderBoundaryRangeService.class 500B
ITOrderVolumeRangeService.class 494B
ITOrderIntervalService.class 485B
ITOrderStandardService.class 485B
AppTest.class 469B
ITOrderService.class 461B
OrderRepository.class 403B
Constants.class 391B
ExampleService.class 280B
Parser.class 248B
index.css 9KB
index.css 9KB
.gitignore 395B
.gitignore 395B
.gitignore 184B
.gitignore 184B
.gitignore 184B
index.html 13KB
index.html 13KB
sharding-jdbc-springboot-example.iml 18KB
sharding-jdbc-basic-example.iml 14KB
files-parse-processor.iml 81B
files-parse-processor-1.0-SNAPSHOT.jar 6KB
ShardingDatabaseAndTableConfiguration.java 4KB
MybatisPlusGeneratorConfig.java 3KB
TOrderIntervalServiceImpl.java 3KB
StandardModTableShardAlgorithm.java 3KB
TOrderBoundaryRangeServiceImpl.java 2KB
OrderServiceImpl.java 2KB
TOrderVolumeRangeServiceImpl.java 2KB
TOrderStandardServiceImpl.java 2KB
StandardModuloShardingTableAlgorithm.java 2KB
OrderRepositoryImpl.java 2KB
TOrderServiceImpl.java 2KB
ParserManager.java 1KB
LotteryConverterImpl.java 1KB
TOrderBoundaryRangeController.java 980B
DataSourceUtil.java 967B
TOrderIntervalController.java 894B
ParserController.java 867B
TOrderVolumeRangeController.java 837B
WordParser.java 833B
TOrderStandardController.java 810B
ExampleMain.java 793B
TOrderController.java 777B
TOrderInterval.java 777B
TOrderBoundaryRange.java 755B
TOrderVolumeRange.java 679B
TOrderStandard.java 679B
TOrder.java 671B
TOrderIntervalMapper.java 634B
TOrderBoundaryRangeMapper.java 629B
TOrderVolumeRangeMapper.java 621B
TOrderStandardMapper.java 608B
TOrderMapper.java 577B
ExampleService.java 532B
ITOrderBoundaryRangeService.java 483B
共 480 条
- 1
- 2
- 3
- 4
- 5
资源评论
- zzkq111232022-05-28用户下载后在一定时间内未进行评价,系统默认好评。
- SPEAKER_2023-01-23内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
- m0_748125812023-11-21总算找到了自己想要的资源,对自己的启发很大,感谢分享~
祖母绿宝石
- 粉丝: 2w+
- 资源: 148
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 海尔H42E10 6i981BTA DH1PY600000 MBOOT usb.bin 程序.zip
- 网盘的功能实现之数据库搭建笔记
- 软件工程与软件测试阶段作业三.doc
- 软件工程中的人工智能辅助设计研究.pptx
- 海尔智能电视刷机数据 H42E07 机编DH1QR000H07 务必确认机编一致 强制刷机 整机USB升级主程序
- 4444444444444444444
- 基于PHP实现响应式创业园区管委会网站.zip
- 安卓手机用作电脑网络摄像头的工具文件
- 海尔智能电视刷机数据 H32E10 机编DH1QX000805 务必确认机编一致 强制刷机 整机USB升级主程序
- ComfyUI AI老照片修复上色工作流
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功