mybatis-plus使用多数据源(以oracle和mysql为例)

使用mybatis-plus多数据源处理数据,大致分为以下步骤:

1.引入依赖

2.配置application.yml

3.配置数据源

1.引入依赖

参考mybatis-plus官方文档,使用多数据源需要引入依赖,具体看项目的spring-boot版本:

<!-- spring-boot 1.5.x 2.x.x -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>${version}</version>
</dependency>

<!-- spring-boot3及以上 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
    <version>${version}</version>
</dependency>

 记得引入驱动依赖和mybatis-plus的依赖

2.配置application.yml

原来的application.yml一般这样配置数据源:

oracle:

spring:
    datasource:
        url: jdbc:oracle:thin:@localhost:1521:datasource_name
        username: oracle_name
        password: oracle_passwd
        driver-class-name: oracle.jdbc.driver.OracleDriver

mysql:

spring:
    datasource:
        url: jdbc:mysql://localhost:3306/
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver

 引入依赖后,使用多数据源的application.yml:

spring:
    datasource:
        dynamic:
            strict: false
            primary: oracle
            datasource:
                oracle:
                    url: jdbc:oracle:thin:@localhost:1521:datasource_name
                    username: oracle_name
                    password: oracle_passwd
                    driver-class-name: oracle.jdbc.driver.OracleDriver
                mysql:
                    url: jdbc:mysql://localhost:3306/datasource_name
                    username: mysql_name
                    password: mysql_password
                    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: mapper/*.xml

 配置多数据源后不同数据源放在了dynamic:下面的datasource下,冒号后面没换行要加空格,strict表示是否开启严格模式,不写默认为false,pimary为默认数据库,不写默认为master,mybatis-plus的配置可以根据自己的来,我这儿写了mapper的位置,在resource的mapper文件夹下。

 3.使用数据源

编写mapper类,使用@DS注解修改数据源

import com.baomidou.dynamic.datasource.annotation.DS;

import java.util.Map;

@DS("mysql")
public interface StudentMapper {
    Map<String,Object> getStudentInfo();
}
import com.baomidou.dynamic.datasource.annotation.DS;

import java.util.Map;

@DS("oracle")
public interface CarMapper {
    Map<String,Object> getCarInfo();
}

 注意这里是interface,不需要写实现类

mapper.xml文件

StudentMapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- 写自己的路径 -->
<mapper namespace="com.test.mapper.StudentMapper">

    <select id="getStudentInfo" resultType="java.util.Map">
        <!-- MySql 语句 -->
        select id,name from  ......
    </select>

</mapper>

CarMapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- 写自己的路径 -->
<mapper namespace="com.test.mapper.CarMapper">

    <select id="getCarInfo" resultType="java.util.Map">
        <!-- Oracle 语句 -->
        select id,name from  ......
    </select>

</mapper>

使用数据源:

@RestController
public class Controller {

    @Autowired
    StudentMapper studentMapper;

    @Autowired
    CarMapper carMapper;

    @GetMapping(value = "/getStudentInfo")
    public getStudentInfo(){
        return studentMapper.getStudentInfo();
    }

    @GetMapping(value = "/getCarInfo")
    public getCarInfo(){
        return carMapper.getCarInfo();
    }
}

文件位置大概是下面这样的,因为没建项目,所以大概写一下:

java.com.test
    controller
        Controller
    mapper
        CarMapper
        StudentMapper
resources
    mapper
        CarMapper.xml
        StudentMapper.xml
    application.yml

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值