項目中使用mybatisplus作為ORM框架,如果需要使用多個數據源,可以按如下方法配置:
一、POM文件引入mybatis plus和mysql相關依賴:

<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency>
二、配置文件
spring: datasource: type: com.zaxxer.hikari.HikariDataSource dynamic: datasource: databasefirst: # 數據源1名稱 url: jdbc:mysql://數據庫IP:端口/數據庫名稱?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=GMT%2B8 username: 用戶名 password: 密碼 driver-class-name: com.mysql.cj.jdbc.Driver databasesecond: # 數據源2名稱 url: jdbc:mysql://數據庫IP:端口/數據庫名稱?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=GMT%2B8 username: 用戶名 password: 密碼 driver-class-name: com.mysql.cj.jdbc.Driver primary: databasefirst #默認首選數據源
上述配置文件中指定了兩個數據源,名稱分別為databasefirst和databasesecond,這兩個名字自己定義即可,在后面的數據源注解中會用到。
三、編寫service類,測試多數據源:
@Service @DS("databasefirst") public class DemoMultiDataSourceService { @Autowired private JdbcTemplate jdbcTemplate; public List noDSAnnotationMethodQuery(){ return jdbcTemplate.queryForList("select * from table_in_firstdb limit 5"); } @DS("databasesecond") public List querySecondDB(){ return jdbcTemplate.queryForList("select * from table_in_seconddb limit 5"); } @DS("databasefirst") public List queryFirstDB(){ return jdbcTemplate.queryForList("select * from table_in_firstdb limit 5"); } }
@DS注解可以用在方法上,也可以用在類級別。用於方法上的DS注解會覆蓋類級別的DS注解,類級別的DS注解指定了類中的方法使用的數據源,方法上的DS注解指定該方法需要用到的數據源。
在實際開發過程中,按照原有的方式編寫mapper接口,並將接口注入到service實現類中即可,在service實現類上使用DS注解(或者service方法上使用DS注解)即可指定數據源。
關於dynamic-datasource的更多使用方法,可以查閱mybatis plus官網。