jdbc sharding yml配置_Spring Boot整合Sharding-JDBC实现分库分表+读写分离

分布式读写分离和分库分表采用sharding-jdbc实现。

sharding-jdbc是当当网推出的一款读写分离实现插件,其他的还有mycat,或者纯粹的Aop代码控制实现。

接下面用spring boot 2.1.4 release 版本实现读写分离。

1. 引入jar包

org.projectlombok

lombok

true

com.alibaba

druid

1.1.9

com.dangdang

sharding-jdbc-core

1.5.4

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-data-jpa

2. 添加配置文件

c287259370adf9bfd16a6d521022638a.png

分别添加三份,配置为database0,database1,database2。

3. 添加DataSourceConfig

package com.fintecher.cn.elasticjobdemo.config;

import com.dangdang.ddframe.rdb.sharding.api.ShardingDataSourceFactory;

import com.dangdang.ddframe.rdb.sharding.api.rule.DataSourceRule;

import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;

import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule;

import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingStrategy;

import com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy;

import com.dangdang.ddframe.rdb.sharding.keygen.DefaultKeyGenerator;

import com.dangdang.ddframe.rdb.sharding.keygen.KeyGenerator;

import com.fintecher.cn.elasticjobdemo.service.DatabaseShardingAlgorithm;

import com.fintecher.cn.elasticjobdemo.service.TableShardingAlgorithm;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

import java.sql.SQLException;

import java.util.Arrays;

import java.util.HashMap;

import java.util.Map;

@Configuration

public class DataSourceConfig {

@Autowired

private Database1Config database1Config;

@Autowired

private Database2Config database2Config;

@Autowired

private DatabaseShardingAlgorithm databaseShardingAlgorithm;

@Autowired

private TableShardingAlgorithm tableShardingAlgorithm;

@Bean

public DataSource getDataSource() throws SQLException {

return buildDataSource();

}

private DataSource buildDataSource() throws SQLException {

//设置从库数据源集合

Map slaveDataSourceMap = new HashMap<>();

slaveDataSourceMap.put(database1Config.getDatabaseName(), database1Config.createDataSource());

slaveDataSourceMap.put(database2Config.getDatabaseName(), database2Config.createDataSource());

//设置默认数据库

DataSourceRule dataSourceRule = new DataSourceRule(slaveDataSourceMap, database1Config.getDatabaseName());

//分表设置

TableRule orderTableRules = TableRule.builder("user").actualTables(Arrays.asList("user_0

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值