Twenty-five years without you

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

项目中使用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>
View Code

二、配置文件

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官网。

 
posted on 2021-11-20 12:38  Rumble Zheng  阅读(2412)  评论(0编辑  收藏  举报