iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【Java】SpringBoot MybatisPlus 连接多数据源(Mysql、SQL Server)
  • 524
分享到

【Java】SpringBoot MybatisPlus 连接多数据源(Mysql、SQL Server)

javamysqlspringboot 2023-08-31 06:08:48 524人浏览 泡泡鱼
摘要

1. 前言 连接多数据源的场景非常多哈,比如读写分离,多业务库报表。 2. 环境准备 jdk1.8Mysql 8.0 (主库)SQL Server 2008 R2(老业务系统)JetBrains id

1. 前言

连接多数据源的场景非常多哈,比如读写分离,多业务库报表。

2. 环境准备

  1. jdk1.8
  2. Mysql 8.0 (主库)
  3. SQL Server 2008 R2(老业务系统)
  4. JetBrains idea
  5. SpringBoot 2.0.4 (Maven项目
  6. mybatis-Plus 3.5.0

3. 配置步骤

1)pom.xml

由于我使用到了MybatisPlus,所以直接使用MybatisPlus官方推荐的dynamic-datasource-spring-boot-starter
其次,用到了sqlServer数据库,所以要增加连接SQLServer的JDBC驱动。(SQL Server 2008 R2对应可以使用8.2.2.jre8版本,我是这么搭配的,供参考)
pom.xml文件中增加:

<dependencies>                <dependency>            <groupId>com.baomidougroupId>            <artifactId>dynamic-datasource-spring-boot-starterartifactId>            <version>3.5.0version>        dependency>                <dependency>            <groupId>com.microsoft.sqlservergroupId>            <artifactId>mssql-jdbcartifactId>            <version>8.2.2.jre8version>        dependency>    dependencies>

2)修改application.yml文件

这里是重中之重,这里要配置好。但是也没有那么难。

1. 之前的配置:

spring:    jackson:        date-fORMat: yyyy-MM-dd HH:mm:ss        time-zone: Asia/Shanghai    datasource:        url: jdbc:mysql://localhost:3306/数据库?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT        username: root        passWord: root        driver-class-name: com.mysql.cj.jdbc.Driver        type: com.alibaba.druid.pool.DruidDataSource

2. 修改后(多数据源)的配置:

spring:    jackson:        date-format: yyyy-MM-dd HH:mm:ss        time-zone: Asia/Shanghai    datasource:        dynamic:            primary: master #设置默认的数据源或者数据源组,默认值即为master            strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源            datasource:                master:                    url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT                    username: root                    password: root                    driver-class-name: com.mysql.cj.jdbc.Driver                    type: com.alibaba.druid.pool.DruidDataSource                slave_1:                    url: jdbc:sqlserver://localhost:1433;DatabaseName=数据库名                    username: sa                    password: sa                    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

其他更详细的配置可以参考这个官方文档描述
可以看到,我把之前的mysql数据库做成了master库,也就是主库,也就是上面primary参数中配置的默认库,如果代码中没有明确指定数据库,默认就是master库。
另外添加了一个slave_1库,slave_1是一个sqlserver库。从名字可以看出来,slave可以有N个库。

4. 多数据源的使用

配置好之后当然就是使用了。
当然,使用起来也非常简单,总的来说就是:
在service层(或使用到的方法上)添加注解@DS(“xxxxxxx”)
先简单看一下我的项目结构(只展示关键结构,其他涉密不展示):

- 项目名称--src---main----java-----com.doph.codepro------controllerDophController.java------entityDoph.java------mapperDophMapper.java------serviceDophService.java-------implDophServiceImpl.java

1)entity层

就是简单的实体类,简单写几个字段。@Data注解是lombok的,不知道的可以搜索一下噢~

@Data@TableName("xxx_doph")public class Doph {private static final long serialVersionUID = 1L;@TableIdprivate int id;private String name;private int age;}

2)Mapper层

由于用了mybatisPlus,而且业务都是简单业务,所以这几部分代码量都比较少,不会的可以看一下mybatisplus的官网

public interface DophMapper extends BaseMapper<Doph>{}

3)Service层

public interface DophService extends IService<Doph>{}

4)Impl层(重)

由于业务都是写在Impl层的,所以根据最小化原则,这里使用@DS注解。
因为我这个文件中的业务操作都是在slave_1库中的,所以这里的@DS注解我直接加在了类上。当然,根据自己的业务,加在方法上也是ok的。

@Servcie@DS("slave_1")public class DophServiceImpl extends ServiceImpl<DophMapper, Doph> implements DophService{}

如果这里的业务是:
从slave_1库中取出slaveList,再从master库中取出masterList,把name相同的条目插入到slave_2库里面去。
那么有可能出现这种情况(以下是伪代码举例):

@Servicepublic DophServiceImpl extends ServiceImpl<DophMapper, Doph> implements DophService{@Autowiredprivate DophMapper dophMapper;@Override@DS("slave_1")private List<Doph> getSlave(){List<Doph> slaveList = new ...;...return slaveList ;}@Override@DS("master")private List<Doph> getMaster(){List<Doph> masterList= new ...;...return masterList;}@Override@DS("slave_2")public void getDiff(){List<Doph> slaveList = getSlave();List<Doph> masterList= getMaster();//循环比较差异for(...){if(slave.name.equals(master.name)){dophMapper.insert(..);}}}}

5)Controller层

@Controller@RequestMapping("/doph/")public class DophController {    @Autowired    private DophService dophService;    @RequestMapping("id1328")    @ResponseBody    public Doph testGetOneDoph(){        QueryWrapper queryWrapper = new QueryWrapper();        queryWrapper.eq("id",1328);        return dophService.getOne(queryWrapper);    }}

以上就能完整地输出一个id为1328的Doph JSON啦~

5. 结果展示

证明我不是在吹牛逼,当然,里面的数据是一点都不能透露。
在这里插入图片描述

后记

之前一直比较害怕多数据源这块。也说不上来原因。当业务达到一定体量之后,或者源于设计之初的规划,多多少少都会碰到多数据源的情况。之前数据库多用oracle,并且自己也有OCP证书,所以Oracle的DBLink总是解决多数据源的第一选择。今天终于突破了这个小点。其实真的一点都不难,难的是突破自己的心魔。

共勉。

来源地址:https://blog.csdn.net/liu_jiachen/article/details/125205754

您可能感兴趣的文档:

--结束END--

本文标题: 【Java】SpringBoot MybatisPlus 连接多数据源(Mysql、SQL Server)

本文链接: https://www.lsjlt.com/news/384272.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Java】SpringBoot MybatisPlus 连接多数据源(Mysql、SQL Server)
    1. 前言 连接多数据源的场景非常多哈,比如读写分离,多业务库报表。 2. 环境准备 JDK1.8Mysql 8.0 (主库)SQL Server 2008 R2(老业务系统)JetBrains ID...
    99+
    2023-08-31
    java mysql spring boot
  • java如何连接SQL Server数据库
    这篇文章主要介绍java如何连接SQL Server数据库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下操作系统:windows 10 64位java开发环境:MyEclipse数据库:SQL Serve...
    99+
    2023-05-31
    java sql server
  • python连接SQL Server数据
    方法一: 1、需要安装pymssql   pip install pymssql 2、连接代码: import pymssql conn=pymssql.connect(host='127.0.0.1',user='user',passw...
    99+
    2023-01-31
    数据 python SQL
  • 如何通过Java连接SQL Server数据库
    今天小编给大家分享一下如何通过Java连接SQL Server数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-05
  • DataGrip连接数据库设置(MySQL、Oracle、SQL Server)
    一、DataGrip连接MySQL 1.1 配置信息 1.2 测试查询employees库中departments表信息 employees为测试库,具体来源,参考这篇文章 下载并导入MySQL示例数据库employees 。 1.3 ...
    99+
    2023-08-16
    数据库 oracle mysql
  • springboot 多mysql,多oracle,多mongodb数据源
    目录 前言 一、springboot yml文件配置 三、mysql 和oracle 多数据源的切换 四、测试方法的调用 五、mongodb多数据源配置 六、mongodb 测试方法的调用 总结 前言 最近的工作中要做数据的迁移,用的数据...
    99+
    2023-10-25
    oracle mongodb spring boot mysql 数据库
  • navicat怎么连接sql server数据库
    这篇文章将为大家详细讲解有关navicat怎么连接sql server数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Navicat是一套快速、可靠并价格相当便宜的数...
    99+
    2024-04-02
  • java连接SQL Server数据库的超详细教程
    目录前言一、sqlserver的配置1、Tcp\Ip 配置2、sql server身份验证配置二、jdbc下载及配置配置环境三、java配置及代码总结 前言 最近数据库大作...
    99+
    2024-04-02
  • 使用connectionStrings连接SQL Server数据库
    要使用connectionStrings连接SQL Server数据库,您需要在应用程序的配置文件中添加一个connectionSt...
    99+
    2023-08-22
    SQL Server数据库
  • jdbc怎么连接sql server数据库
    要连接 SQL Server 数据库,您需要执行以下步骤:1. 下载并安装 SQL Server JDBC 驱动程序。您可以从 Mi...
    99+
    2023-09-11
    jdbc sql server数据库
  • SpringBoot多数据库连接(mysql+oracle)的实现
    出于业务需求,有时我们需要在spring boot web应用程序中配置多个数据源并连接到多个数据库。 使用过Spring Boot框架的小伙伴们,想必都发现了Spring Boot...
    99+
    2024-04-02
  • 项目中MySQL数据源转SQL server数据源Dual无效
    报错:2017-12-12 15:54:54,279 ERROR [com.alibaba.druid.pool.DruidDataSource] - dataSource init errorjava.s...
    99+
    2024-04-02
  • jdbc中怎么连接sql server数据库
    jdbc中怎么连接sql server数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 驱动问题:JDBC2005与JDBC2008一...
    99+
    2024-04-02
  • ADO.NET连接SQL Server数据库的步骤
    本篇内容主要讲解“ADO.NET连接SQL Server数据库的步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET连接SQL Server数据库的步骤”吧!在.NET应用程序中,创...
    99+
    2023-06-17
  • 如何远程连接SQL Server数据库
    本篇文章为大家展示了如何远程连接SQL Server数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先需要先设置客户端网络实用工具点击“开始”-“程序”,在“...
    99+
    2024-04-02
  • Sql server数据库如何远程连接
    Sql server数据库如何远程连接,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在同一网络环境下,或者在可以访问的IP地址...
    99+
    2024-04-02
  • C#中怎么连接SQL Server数据库
    今天就跟大家聊聊有关C#中怎么连接SQL Server数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#连接SQL Server程序代码:using System.D...
    99+
    2023-06-17
  • ADO.NET 中怎么连接SQL Server数据库
    ADO.NET 中怎么连接SQL Server数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ADO.NET SQL Server关闭连接我们建议您在使用完...
    99+
    2023-06-17
  • SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis
     一、背景 在SpringBoot Mybatis 项目中,需要连接 多个数据源,连接多个数据库,需要连接一个MySQL数据库和一个Oracle数据库和一个Redis 二、依赖 pom.xml or...
    99+
    2023-09-20
    spring boot mybatis mysql
  • Mysql的数据库连接---SpringBoot
    1.原生态连接 ①:准备工作:引入mysql依赖:                  mysql            mysql-connector-java            5.1.6         ②:书写DBUtil工具...
    99+
    2023-09-03
    数据库 mysql spring boot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作