引入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);
}
}
分别调用下接口即可。