SpringBoot MyBatisPlus多数据源

引入pom依赖:

此处注意 还需要引入你的连接数据库的依赖

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>3.5.1</version>
</dependency>

修改application.yml配置:

server:
  port: 8888
spring:
  application:
    name: test
  datasource:
    dynamic:
      primary: db1 #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        db1:
          url: jdbc:mysql://localhost:3306/db1?characterEncoding=utf-8&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
        db2:
          url: jdbc:mysql://localhost:3306/db2?characterEncoding=utf-8&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

官网的介绍比较粗,放上我测试的代码:

项目结构:

entity:

db1:

package cn.com.liuzl.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 10:21
 */
@TableName("face_to_feature")
@Data
public class FaceToFeature {

    private String id;
    private String faceDbName;
    private String featureDbName;
    private String engineName;
    private String isUseNewBasedb;


}

db2:

package cn.com.liuzl.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 10:47
 */
@TableName("log_fail_image")
@Data
public class LogFailImage {

    @TableId
    private String id;
    private String op;
    private String engineName;
    private String faceDbName;
    private String imageId;
    private String imageUrl;
    private String errorMsg;
    private String createTime;

}

controller:

db1:

package cn.com.liuzl.controller;

import cn.com.liuzl.entity.FaceToFeature;
import cn.com.liuzl.service.FaceToFeatureService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 11:24
 */
@Tag(name = "FaceToFeatureController",description = "db1查询测试controller")
@RestController
@RequestMapping("/face")
public class FaceToFeatureController {

    @Autowired
    private FaceToFeatureService faceToFeatureService;

    @Operation(summary = "获取FaceToFeature全部数据")
    @GetMapping("/findAll")
    public List<FaceToFeature> findAll(){
      return faceToFeatureService.findAll();
    }
}

db2:

package cn.com.liuzl.controller;

import cn.com.liuzl.entity.LogFailImage;
import cn.com.liuzl.service.LogFailImageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 11:24
 */
@Tag(name = "LogFailImageController",description = "db2查询测试controller")
@RestController
@RequestMapping("log")
public class LogFailImageController {

    @Autowired
    private LogFailImageService logFailImageService;

    @Operation(summary = "根据指定id查询")
    @GetMapping("/findById")
    public List<LogFailImage> findById(){
        return logFailImageService.findById();
    }

}

service:

db1:

package cn.com.liuzl.service;

import cn.com.liuzl.entity.FaceToFeature;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface FaceToFeatureService extends IService<FaceToFeature> {

    List<FaceToFeature> findAll();
}

db2:

package cn.com.liuzl.service;

import cn.com.liuzl.entity.LogFailImage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface LogFailImageService extends IService<LogFailImage> {

    List<LogFailImage> findById();
}

serviceImpl:

解释下@DS这个注解,根据官网的

db1:

package cn.com.liuzl.service.impl;

import cn.com.liuzl.entity.FaceToFeature;
import cn.com.liuzl.mapper.db1.FaceToFeatureMapper;
import cn.com.liuzl.service.FaceToFeatureService;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 10:53
 */
@DS("db1")
@Service
public class FaceToFeatureServiceImpl extends ServiceImpl<FaceToFeatureMapper,FaceToFeature> implements FaceToFeatureService {

    @Autowired
    private FaceToFeatureMapper faceToFeatureMapper;

    @Override
    public List<FaceToFeature> findAll() {
        return faceToFeatureMapper.selectList(null);
    }
}

db2:

package cn.com.liuzl.service.impl;

import cn.com.liuzl.entity.LogFailImage;
import cn.com.liuzl.mapper.db2.LogFailImageMapper;
import cn.com.liuzl.service.LogFailImageService;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 11:21
 */
@Service
@DS("db2")
public class LogFailImageServiceImpl extends ServiceImpl<LogFailImageMapper,LogFailImage> implements LogFailImageService {

    @Autowired
    private LogFailImageMapper logFailImageMapper;

    @Override
    public List<LogFailImage> findById() {
        List<String> ids = new ArrayList<>();
        ids.add("000027488e6b4f77a30ae08195e3d656");
        ids.add("0000832795c04d3781e4cd0a822efe96");
        return logFailImageMapper.selectBatchIds(ids);
    }
}

Mapper:

db1:

package cn.com.liuzl.mapper.db1;

import cn.com.liuzl.entity.FaceToFeature;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 10:31
 */
@Repository
@Mapper
public interface FaceToFeatureMapper extends BaseMapper<FaceToFeature> {


}

db2:

package cn.com.liuzl.mapper.db2;

import cn.com.liuzl.entity.LogFailImage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface LogFailImageMapper extends BaseMapper<LogFailImage> {

}

启动类添加注解:@MapperScan

package cn.com;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Description
 * @Author liuzl
 * @Data 2022/5/24 9:27
 */
@SpringBootApplication
@MapperScan("cn.com.liuzl.mapper")
public class SpringbootTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootTestApplication.class,args);
    }

}

分别调用下接口即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只不秃头的小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值