Dynamic-Datasource是一款动态数据源的轻量级实现,封装成Spring Starter方式引入,支持Mybatis、MybatisPlus读写分离,支持通过注解动态切换切换数据源。

@DS:指定使用数据库跟配置文件中配置的对应,可以注解在方法上和类上,同时存在方法注解优先于类上注解,强烈建议注解在service实现或mapper接口方法上。

依赖

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

配置文件,两个数据源,mysql和pgsql,三个库text、cca、gene_text

server:port: 8081address: 127.0.0.1spring:application:name: templatedatasource:dynamic:# 默认数据库primary: master# 严格匹配数据源,默认false. true未匹配到指定数据源时抛异常strict: truedatasource:text:url: jdbc:mysql://127.0.0.1:3306/text?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivercca:url: jdbc:mysql://127.0.0.1:3306/cca?characterEncoding=UTF-8&serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.DrivergeneText:url: jdbc:postgresql://127.0.0.1:5432/gene_textusername: postgrespassword: postgresdriver-class-name: org.postgresql.Drivermybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath:**/mapper/*.xml

text库中user表

@Data
@TableName("user")
public class User {@TableIdprivate Integer uId;private String uName;private Integer uAge;private LocalDateTime uBirthDay;private Integer dId;private LocalDateTime createTime;private LocalDateTime updateTime;
}

Mapper

@DS("text")
@Mapper
public interface UserMapper extends BaseMapper<User> {}

cca库中的config表

@Data
@TableName("config")
public class Config {@TableIdprivate Integer configId;private String configName;private String configKey;private String configValue;private LocalDateTime createTime;private LocalDateTime updateTime;}

Mapper

@DS("cca")
@Mapper
public interface ConfigMapper extends BaseMapper<Config> {}

gene_text库中的call表

@Data
@TableName("call")
public class Call {@TableIdprivate String partyId;private String dn;private String keyName;private String value;private LocalDateTime createTime;}

Mapper

@DS("geneText")
@Mapper
public interface CallMapper extends BaseMapper<Call> {}

使用,查询text库中的user表

@RestController
@RequestMapping("/template")
public class TemplateController extends BaseController{@Autowiredprivate UserServiceImpl userService;@PostMapping("/queryTemplate")public ResponseResult queryTemplate(@RequestBody QueryReq queryReq) {return success(userService.queryTemplate(queryReq));}
}
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic Page<User> queryTemplate(QueryReq queryReq) {// 分页设置Page<User> userPage = Page.of(1, 10);// 查询条件设置QueryWrapper<User> queryWrapper = new QueryWrapper<>();if (StrUtil.isNotBlank(queryReq.getName())) {queryWrapper.eq("u_name", queryReq.getName());}if (queryReq.getAge() != null) {queryWrapper.eq("u_age", queryReq.getAge());}if (queryReq.getCreateTime() != null && queryReq.getEndTime() != null) {queryWrapper.between("u_birth_day", queryReq.getCreateTime(), queryReq.getEndTime());}return userMapper.selectPage(userPage, queryWrapper);}
}

测试

查询geneText库call表

@RestController
@RequestMapping("/template")
public class TemplateController extends BaseController{@Autowiredprivate CallServiceImpl callService;@GetMapping("/query")public ResponseResult query() {return success(callService.queryTemplate());}}
@Service
public class CallServiceImpl implements CallService {@Autowiredprivate CallMapper callMapper;@Overridepublic Page<Call> queryTemplate() {// 分页设置Page<Call> callPage = Page.of(1, 10);// 查询条件设置QueryWrapper<Call> queryWrapper = new QueryWrapper<>();queryWrapper.eq("dn", "6001");return callMapper.selectPage(callPage, queryWrapper);}
}

测试

Dynamic Datasource相关推荐

  1. druid多数据源+mybatis-plus的dynamic【一个简单例子】

    主要利用dynamic来实现动态数据源 1 pom文件加依赖 <!--版本号--> <properties><mybatisplus.boot.version>3. ...

  2. Java项目:前后端分离疫情防疫平台设计和实现(java+springmvc+VUE+node.js+mybatis+mysql+springboot+redis+jsp)

    源码获取:博客首页 "资源" 里下载! 主要技术:Java.springmvc.VUE.node.js.mybatis.mysql.tomcat.jquery.layui.boot ...

  3. Spring Boot 动态数据源(多数据源自己主动切换)

    本文实现案例场景: 某系统除了须要从自己的主要数据库上读取和管理数据外.另一部分业务涉及到其它多个数据库,要求能够在不论什么方法上能够灵活指定详细要操作的数据库. 为了在开发中以最简单的方法使用,本文 ...

  4. springboot简易集成mybatisPlus+多数据源

    该项目主要实现mybatisplus.多数据源.lombok.druid的集成 主要参考 https://mp.baomidou.com/guide/quick-start.html 项目地址:htt ...

  5. springboot 配置双mysql数据库

    项目中用到,学习了一下,记录下来,先回用,再搞懂原理 架构 springboot+mybatis+mysql连接池(springboot默认的HikariCP) 配置点 1.就目录里的DataSour ...

  6. Spring Boot + Mybatis 实现动态数据源

    动态数据源 在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动 ...

  7. Spring Boot 动态数据源(Spring 注解数据源)

    本文实现案例场景: 某系统除了需要从自己的主要数据库上读取和管理数据外,还有一部分业务涉及到其他多个数据库,要求可以在任何方法上可以灵活指定具体要操作的数据库. 为了在开发中以最简单的方法使用,本文基 ...

  8. [MyBatisPlus]模拟多数据源环境及测试

    模拟多数据源环境 多数据源 适用于多种场景:纯粹多库. 读写分离. 一主多从. 混合模式等 目前我们就来模拟一个纯粹多库的一个场景,其他场景类似 场景说明: 我们创建两个库,分别为:mybatis_p ...

  9. mybatis 自动填充无效_开发小知识-mybatis-plus自动填充与读写分离

    mybatis-plus 自动填充 说明 我们在设计表结构的时候,往往会额外添多如下几个字段 create_time[表字段]-- createTime[实体字段] : 创建时间 update_tim ...

最新文章

  1. nginx: [error] invalid PID number in /usr/local/webserver/nginx/logs/nginx.pid
  2. WebService大讲堂之Axis2(9):编写Axis2模块(Module)
  3. C++11:右值引用和转移赋值
  4. mysql的空间查询函数_MYSQL空间查询函数
  5. 【智力题】—— 猴子分桃
  6. 士兵杀敌 三 --- O( 1 ) 的时间复杂度 .
  7. 如何用bat批处理编译swf项目
  8. 中文版通用工程师软件DPS 别克雪佛兰编程改装
  9. 协同办公OA业务系统数据集成(3)-基于OA(e-cology Jersey)定义Rest Api前端数据接口封装
  10. 鸿蒙系统微信红包,微信红包王版app下载-最新微信红包王版下载-安卓苹果鸿蒙版-155175软件...
  11. 单纯形法的代码实现与退化算例
  12. 如何批量压缩图片?这几个方法值得一试
  13. 为什么建设企业网站是必须的?小企业有必要做网站建设吗?
  14. android 摄像头黑屏,5+app 安卓调用摄像头黑屏 苹果可以
  15. 新时代 新创意 新场景 新消费 2021“设计+”珠宝首饰创新设计展将于10月17日开幕
  16. ocaml_管理OCaml软件包的好工具
  17. 人工智能--打飞机游戏
  18. React的项目创建
  19. Java-Map集合
  20. 快能通学生计算机怎么玩游戏规则,无聊的教室游戏攻略大全 新手快速通关技巧汇总[多图]...

热门文章

  1. 养成这13个好的学习习惯,想不当学霸都难啊
  2. [转载]数字音频接口
  3. 字体标签<font>.......</font>
  4. vue中设置花样字体
  5. python 将一个数组倒序输出及将一个数字倒序输出
  6. 没想到今年奥斯卡奖的最大亮点竟然是...这一巴掌!
  7. matlab对信号滤波,matlab对信号的滤波方法
  8. python如何播放视频_python中播放视频的方法有哪些
  9. getchar函数与缓冲区的细节问题
  10. python输入一个假分数_假分数化成整数或带分数练习