跳到主要内容

Spring Boot 3.x-Spring Data JDBC&JPA 多数据源(AbstractRoutingDataSource)

系列文章目录

系列文章:Spring Boot 3.x 系列教程


文章目录

  • 系列文章目录
  • 前言
  • 一、数据源定义
  • 二、Spring Data JPA使用
    • 1.创建\entity\
  • 2.创建repository
  • 3.测试
  • 4.AOP自动选择数据源
  • 二、Spring Data JDBC使用

前言

Spring Boot 3.x-Spring Data JPA多数据源-分包模式此文中介绍的是多数据源,每个数据源的表不同,接下来需要解决的是多数据源,每个数据源的表结构一致,这种情况最常见的是数据库主从,查询读从库,新增删除修改走主库。

 

上述方案,需要一个动态切换的datasource根据不同的条件,切换不同的数据源。Spring从2.0版本开始就提供方案AbstractRoutingDataSource

AbstractRoutingDataSource:抽象DataSource实现,基于查找键(determineCurrentLookupKey())将getConnection()调用路由到目标数据源之一。

 

数据库准备:
主库:mulit-ds1
从库:mulit-ds2

DROP TABLE IF EXISTS user;
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT,
age int(11) DEFAULT NULL,
name varchar(255) DEFAULT NULL,
sex varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;