Spring配置动态数据库

首先创建一个SpringWeb项目——dynamicdb(spring-boot2.5.7)

然后引入相关依赖lombok、swagger2、mybatis-plus,如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>dynamicdb</artifactId><version>0.0.1-SNAPSHOT</version><name>dynamicdb</name><description>dynamicdb</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
​<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>compile</scope></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency><!-- mybatis-plus 依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- sqlSessionTemplate 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- spring-boot dynamic 动态数据库依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.6</version>
</dependency>
<!-- druid 动态简易使用依赖 @DS("db1")-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>  
</dependencies>
​
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
​
</project>

然后在包dynamicdb下面创建controller、mapper、dbmodel, 然后在resource下面创建mapper文件夹及问题,如下图:

然后配置application,启用swagger2和添加mapper扫描,如下:

@EnableSwagger2 @Log4j2 @SpringBootApplication @MapperScan("com.example.dynamicdb.mapper") public class DynamicdbApplication { ​ public static void main(String[] args) { SpringApplication.run(DynamicdbApplication.class, args); } }

然后编辑resources下的application.yml,如下:

server:port: 8082servlet:context-path: /api
spring:servlet:multipart:max-file-size: 50MBmax-request-size: 50MBdatasource:dynamic: #使用动态数据库配置primary: db1 # 配置默认数据库datasource:db1: # 数据源1driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost/db1username: rootpassword: 1qaz!QAZdb2: # 数据源2driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost/db2username: rootpassword: 1qaz!QAZdruid:initial-size: 1max-active: 20min-idle: 1max-wait: 60000autoconfigure:exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid配置 
mybatis-plus:mapper-locations: classpath:mapper/*.xml #指定resources下的mapper文件夹下是存储映射XML的文件夹然后创建SqlSessionController,使用SqlSession来加载Mapper,代码如下:

@RestController
public class SqlSessionController {
​
​@Autowiredprivate SqlSession sqlSession;
​@GetMapping(value = "/SqlSession/normalSql")@ResponseBody@ApiOperation(value = "默认查询,从主数据库查询", notes = "当前配置的主数据是db1-primary: db1")public List<user> normalSql() {//读取第一个数据库的值UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<user> users = mapper.test();return users;}@GetMapping(value = "/SqlSession/data_from_db1")@ResponseBody@DS("db1")@ApiOperation(value = "从db1数据库查询数据", notes = "查询db1")public List<user> data_from_db1() {//读取第一个数据库的值UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<user> users = mapper.test();return users;}
​@GetMapping(value = "/SqlSession/data_from_db2")@ResponseBody@DS("db2")@ApiOperation(value = "从db2数据库查询数据", notes = "查询db2")public List<user> data_from_db2(Integer id) {//读取第二个数据库的值UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<user> users = mapper.test();return users;}
}

代码中使用 @DS("db1")来指定该接口内使用的数据库。

再创建一个MapperController,测试使用Mapper直接访问数据库,如下

@RestController
public class MapperController {
​@Autowiredprivate UserMapper userMapper;
​@GetMapping(value = "/Mapper/normalSql")@ResponseBody@ApiOperation(value = "使用Mapper查询,从主数据库查询", notes = "当前配置的主数据是db1-primary: db1")public List<user> normalSql() {//读取第一个数据库的值List<user> users = userMapper.test();return users;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python数据科学视频讲解:Python的数据运算符

2.9 Python的数据运算符 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.9节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据科…

stateflow 之图函数、simulink函数和matlab函数使用及案例分析

目录 前言 1. 图函数graph function 2.simulink function 3.matlab function 4.调用stateflow中的几种函数方式 前言 对于stateflow实际上可以做simulink和matlab的所有任务&#xff0c;可以有matlab的m语言&#xff0c;也可以有simulink的模块&#xff0c;关于几种函数在…

头歌-Python 基础

第1关&#xff1a;建模与仿真 1、 建模过程&#xff0c;通常也称为数学优化建模(Mathematical Optimization Modeling)&#xff0c;不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果&#xff0c;因此命名为▁▁▁。 填空1答案&#xff1a;决…

机器学习:从概念到应用

机器学习&#xff1a;从概念到应用 一、引言 随着科技的飞速发展&#xff0c;人工智能已经渗透到我们生活的方方面面。作为人工智能领域的一个重要分支&#xff0c;机器学习正在改变我们的世界。它通过让计算机从数据中学习&#xff0c;实现自我优化和改进&#xff0c;为各行…

io.fabric8.docker-maven-plugin插件作用

<plugin><groupId>io.fabric8</groupId><artifactId>docker-maven-plugin</artifactId></plugin>这是一个 Maven 插件配置&#xff0c;用于与 Docker 相关的操作。具体来说&#xff0c;这是 docker-maven-plugin 插件的配置。 docker-mav…

【Git从入门到精通 | 02】.gitignore忽略文件不生效怎么办?

这是机器未来的第64篇文章 原文首发地址&#xff1a;https://robotsfutures.blog.csdn.net/article/details/134989872 《Git源码版本管理系列》快速导航&#xff1a; 【Git从入门到精通 | 01】企业Git使用github工作流最佳实践 文章目录 1. 问题场景2. 原因解析3. 处理办法 写…

面试题---机器学习算法

线性回归&#xff1a;适用于预测一个连续的目标变量&#xff0c;根据输入的自变量建立一个线性模型&#xff0c;通过最小化误差来拟合数据集。 逻辑回归&#xff1a;适用于分类问题&#xff0c;将特征值映射到0到1之间的概率值&#xff0c;通过设置阈值来判断样本属于哪一类。…

CTF-Java做题记录合集

文章目录 前言[CISCN 2023]deserbug[MTCTF2022]easyjava[羊城杯 2020]a_piece_of_java[红明谷CTF 2021]JavaWeb 前言 年底都比较忙&#xff0c;很久没有静下心来打过CTF了&#xff0c;最近Java的各种链子也是接触了不少&#xff0c;于是静下心来打算做点Java类的题目&#xff…

linux 网络子系统 摘要

当你输入一个网址并按下回车键的时候&#xff0c;首先&#xff0c;应用层协议对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号&#xff0c;确认了双方通信的应用程序;然后网络协议加上了双方的IP地址&#xff0c;确认了双方的网络位置;最后链路层协议加上了双方的M…

力扣labuladong——一刷day73

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣449. 序列化和反序列化二叉搜索树二、力扣173. 二叉搜索树迭代器 前言 可以直接中序遍历两个 BST 得到两个有序数组&#xff0c;然后把这两个有序数组合…

【docker】镜像使用(Nginx 示例)

查看本地镜像列表 docker images删除本地镜像 # docker rmi [容器 ID]docker rmi a6bd71f48f68 查找镜像 docker search nginx 参数介绍 NAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否 docker 官方发布STARS: 点赞、喜欢AUTOMATED: 自动构建。 拉去镜像 …

SQL小技巧3:分层汇总

前几天&#xff0c;QQ学习群有个小伙伴问我一个使用SQL分层汇总的问题。 今天正好分享下。 需求描述 在数据报表开发的工作中&#xff0c;经常会遇到需要对数据进行分组汇总的情况。 假设有一个销售数据表sales&#xff0c;包含列region&#xff08;地区&#xff09;、mont…

LInux查看cpu、磁盘、内存、网络的命令

LInux查看cpu、磁盘、内存、网络的命令 1.查看cpu系列2.查看内存方面3.查看磁盘相关 1.查看cpu系列 想知道了cpu性能好不好、忙不忙可以用lscpu、uptime、top、htop。 1.1 top 命令查看系统的实时负载&#xff0c; 包括进程、CPU负载、内存使用等等 top内容详解 项目意义us用…

出海电商访问亚马逊打开很慢!有什么办法可以快速解决?

亚马逊作为全球最大的电商平台&#xff0c;很多中国卖家在平台上做着买卖。亚马逊中国卖每天都要频繁访问亚马逊店铺处理回复邮件和处理订单&#xff0c;上传产品等等事宜&#xff0c;但是时常会遇到打开一个新页面需要等待很长时间&#xff0c;更甚者直接打不开页面! 亚马逊打…

华纳云:宝塔面板下配置Discuz伪静态的步骤

在宝塔面板中配置Discuz伪静态通常涉及到在站点配置中添加相应的Nginx或Apache伪静态规则。以下是在宝塔面板中配置Discuz伪静态的基本步骤&#xff1a; 设置Nginx伪静态规则 1.登录宝塔面板。 2.进入站点管理页面。 3.找到您的Discuz站点&#xff0c;在站点管理页面&#…

纸质表格扫描转Excel的利器,让您省钱省劲

将纸质表格扫描到电脑Excel上是一种快捷而高效的数字化处理方法&#xff0c;使得数据可以方便地进行编辑、分析和共享。本文将介绍几种常用的方法来完成这项任务。 第一种方法是使用扫描仪。现代扫描仪具备较高的分辨率和颜色还原能力&#xff0c;可以将纸质表格转化为高质量的…

Java8新特性:方法引用与构造器引用

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

Mybatis插件对指定字段加解密

Mybatis插件对指定字段加解密 1、需求环境&#xff1a;2、需求拆分3、代码实现 (懒得去除敏感信息了&#xff0c;先说明以下全是截图无代码)对存量数据对增量数据 1、需求环境&#xff1a; 在整个项目都结束之后&#xff0c;甲方希望库表内所有涉及到电话号码、详细地址、身份…

thinkphp连接数据库mysql 报错问题

第一 看报错日志php如果是下面这个报错的话 就是mysql 数据库没有验证连接 ​​​​​​​[2023-12-13T09:57:0108:00][error] [10501]SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 我们就可以去mysql 的文件检查 验证身份 使…

Python爬取旅游网站热门景点信息的技术性文章

目录 一、引言 二、准备工作 三、爬取热门景点信息 1、分析网页结构 2、发送HTTP请求 3、解析HTML文档 4、提取所需信息 5、保存数据到文件或数据库 四、优化爬虫程序性能和效率 五、异常处理与日志记录 1、异常处理 2、日志记录 六、安全性与合法性考虑 七、总结…