mysql sharding 配置_数据库分库分表配置sharding-jdbc

@Bean(name = "shardingDataSource", destroyMethod = "close")

@Qualifier("shardingDataSource")publicDataSource getShardingDataSource() {//配置真实数据源

Map dataSourceMap = new HashMap<>(3);//配置第一个数据源

DruidDataSource dataSource1 =createDefaultDruidDataSource();

dataSource1.setDriverClassName("com.mysql.jdbc.Driver");

dataSource1.setUrl("jdbc:mysql://localhost:3306/db0");

dataSource1.setUsername("root");

dataSource1.setPassword("root");

dataSourceMap.put("db0", dataSource1);//配置第二个数据源

DruidDataSource dataSource2 =createDefaultDruidDataSource();

dataSource2.setDriverClassName("com.mysql.jdbc.Driver");

dataSource2.setUrl("jdbc:mysql://localhost:3306/db1");

dataSource2.setUsername("root");

dataSource2.setPassword("root");

dataSource2.setName("db1-0001");

dataSourceMap.put("db1", dataSource2);//配置第三个数据源

DruidDataSource dataSource3 =createDefaultDruidDataSource();

dataSource3.setDriverClassName("com.mysql.jdbc.Driver");

dataSource3.setUrl("jdbc:mysql://localhost:3306/db2");

dataSource3.setUsername("root");

dataSource3.setPassword("root");

dataSourceMap.put("db2", dataSource3);//配置Order表规则

TableRuleConfiguration orderTableRuleConfig = newTableRuleConfiguration();

orderTableRuleConfig.setLogicTable("t_order");

orderTableRuleConfig.setActualDataNodes("db${0..2}.t_order_${0..1}");//orderTableRuleConfig.setActualDataNodes("db0.t_order_0,db0.t_order_1,db1.t_order_0,db1.t_order_1,db2.t_order_0,db2.t_order_1");//配置分库策略(Groovy表达式配置db规则)

orderTableRuleConfig.setDatabaseShardingStrategyConfig(new InlineShardingStrategyConfiguration("user_id", "db${user_id % 3}"));//配置分表策略(Groovy表达式配置表路由规则)

orderTableRuleConfig.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("order_id", "t_order_${order_id % 2}"));//配置分片规则

ShardingRuleConfiguration shardingRuleConfig = newShardingRuleConfiguration();

shardingRuleConfig.getTableRuleConfigs().add(orderTableRuleConfig);//配置order_items表规则...//获取数据源对象

DataSource dataSource = null;try{

dataSource= ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new ConcurrentHashMap(), newProperties());

}catch(SQLException e) {

e.printStackTrace();

}returndataSource;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值