package com.trj.shading.config;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration;
import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlMasterSlaveDataSourceFactory;
import org.apache.shardingsphere.shardingjdbc.api.yaml.YamlShardingDataSourceFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import javax.sql.DataSource;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* @author TRJ
* @date 2019/10/11
* Description:
*/
@Configuration
public class ShadingConfig {
@Bean
public DataSource dataSource() throws IOException, SQLException {
File yamlFile = ResourceUtils.getFile("classpath:sharding-jdbc.yaml");
return YamlShardingDataSourceFactory.createDataSource(yamlFile);
}
// @Bean
public DataSource dataSourceByCode() throws SQLException {
// 配置真实数据源
Map<String, DataSource> dataSourceMap = new HashMap<>(5);
// 配置第一个数据源
BasicDataSource dataSource1 = new BasicDataSource();
dataSource1.setDriverClassName("com.mysql.jdbc.Driver");
dataSource1.setUrl("jdbc:mysql://192.168.1.60:3306/shading0");
dataSource1.setUsername("root");
dataSource1.setPassword("19931213jie@JIE");
dataSourceMap.put("shading0", dataSource1);
// 配置第二个数据源
BasicDataSource dataSource2 = new BasicDataSource();
dataSource2.setDriverClassName("com.mysql.jdbc.Driver");
dataSource2.setUrl("jdbc:mysql://192.168.1.60:3306/shading1");
dataSource2.setUsername("root");
dataSource2.setPassword("19931213jie@JIE");
dataSourceMap.put("shading1", dataSource2);
// 配置Order表规则
TableRuleConfiguration orderTableRuleConfig = new TableRuleConfiguration("t_order","shading${0..1}.t_order${0..1}");
// 配置分库 + 分表策略
orderTableRuleConfig.setDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("user_id", "shading${user_id % 2}"));
orderTableRuleConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("order_id", "t_order${order_id % 2}"));
// 配置分片规则
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
shardingRuleConfig.getTableRuleConfigs().add(orderTableRuleConfig);
// 省略配置order_item表规则...
// ...
// 获取数据源对象
DataSource dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new Properties());
return dataSource;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
mysql读写分离,分库分表-MysqlSample.zip
共29个文件
java:13个
xml:5个
gitignore:3个
需积分: 0 0 下载量 100 浏览量
2023-11-07
20:45:13
上传
评论
收藏 34KB ZIP 举报
温馨提示
mysql读写分离,分库分表-MysqlSample
资源推荐
资源详情
资源评论
收起资源包目录
mysql读写分离,分库分表-MysqlSample.zip (29个子文件)
MysqlSample-master
pom.xml 530B
mysql-r-w-separation
mvnw.cmd 6KB
pom.xml 3KB
src
test
java
com
trj
mysqlwrseparation
MysqlWRSeparationApplicationTests.java 2KB
main
resources
mapper
OrderInfoMapper.xml 3KB
application.properties 103B
sharding-jdbc.yaml 834B
java
com
trj
mysqlwrseparation
mapper
OrderInfoMapper.java 452B
entity
OrderInfo.java 479B
service
OrderInfoService.java 1KB
MysqlWRSeparationApplication.java 622B
config
ShadingConfig.java 766B
MybatisPlusConfig.java 859B
mvnw 9KB
.gitignore 339B
shading
mvnw.cmd 6KB
pom.xml 3KB
src
test
java
com
trj
shading
ShadingApplicationTests.java 1KB
main
resources
mapper
OrderInfoMapper.xml 747B
application.properties 104B
sharding-jdbc.yaml 804B
java
com
trj
shading
mapper
OrderInfoMapper.java 205B
entity
OrderInfo.java 492B
ShadingApplication.java 518B
config
ShadingConfig.java 3KB
MybatisPlusConfig.java 848B
mvnw 9KB
.gitignore 339B
.gitignore 8B
共 29 条
- 1
资源评论
武昌库里写JAVA
- 粉丝: 3220
- 资源: 1925
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功