首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MyBaits多数据源配置

MyBaits多数据源配置

作者头像
晓果冻
发布于 2022-09-08 03:23:25
发布于 2022-09-08 03:23:25
78601
代码可运行
举报
运行总次数:1
代码可运行

MyBaits多数据源配置

环境及依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
首先准备一个SpringBoot项目,主要依赖如下:

		<parent>
        	<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot-starter-parent</artifactId>
        	<version>2.2.2.RELEASE</version>
        	<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
具体代码

配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
####注意是jdbc-url而不是url,不然会报错:Cause: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

spring:
  datasource:
    primary:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbc-url: jdbc:mysql://localhost:3306/executor?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: root
      password: root
    secondary:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbc-url: jdbc:mysql://localhost:3306/halo_dev?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: root
      password: root

新建一个配置类,用于配置主数据库相关的bean。

第一个数据源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @author 晓果冻
 * @version 1.0
 * @date 2021/10/24 15:39
 */
@Configuration
//basePackages是接口路径
@MapperScan(basePackages = "com.cgd.xxljobexecutor.dao.executor", sqlSessionFactoryRef = "PrimarySqlSessionFactory")//basePackages:接口文件的包路径
public class PrimaryDataSourceConfig {

    @Bean(name = "PrimaryDataSource")
    // 表示这个数据源是默认数据源
    @Primary//这个一定要加,如果两个数据源都没有@Primary会报错
    @ConfigurationProperties(prefix = "spring.datasource.primary")//我们配置文件中的前缀
    public DataSource getPrimaryDateSource() {
        return DataSourceBuilder.create().build();
    }


    @Bean(name = "PrimarySqlSessionFactory")
    @Primary
    public SqlSessionFactory primarySqlSessionFactory(@Qualifier("PrimaryDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        //这里需要mybatis的xml的路径
        bean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/executor/*.xml"));
        return bean.getObject();// 设置mybatis的xml所在位置
    }

    @Bean("PrimarySqlSessionTemplate")
    // 表示这个数据源是默认数据源
    @Primary
    public SqlSessionTemplate primarySqlSessionTemplate(
            @Qualifier("PrimarySqlSessionFactory") SqlSessionFactory sessionfactory) {
        return new SqlSessionTemplate(sessionfactory);
    }
}

第二个数据源配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @author 晓果冻
 * @version 1.0
 * @date 2021/10/24 15:41
 */
@Configuration
@MapperScan(basePackages = "com.cgd.xxljobexecutor.dao.halo", sqlSessionFactoryRef = "SecondarySqlSessionFactory")
public class SecondaryDataSourceConfig {

    @Bean(name = "SecondaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.secondary")
    public DataSource getSecondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "SecondarySqlSessionFactory")
    public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("SecondaryDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/halo/*.xml"));
        return bean.getObject();// 设置mybatis的xml所在位置
    }

    @Bean("SecondarySqlSessionTemplate")
    public SqlSessionTemplate secondarySqlSessionTemplate(
            @Qualifier("SecondarySqlSessionFactory") SqlSessionFactory sessionfactory) {
        return new SqlSessionTemplate(sessionfactory);
    }
}

@MapperScan :配置mybatis的接口类放的地方。

@Primary :默认数据库,否则会因为不知道哪个数据库是默认数据库而报错。

项目结构

相关代码仓库https://gitee.com/cgd0526/xxl-job-executor
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
013.Nginx动静分离
为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源,如图片、js、css等文件,可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。对于用户请求的动态文件,如servlet、jsp,则转发给Tomcat,Jboss服务器处理,这就是动静分离。即动态文件与静态文件的分离。
木二
2020/07/21
1.3K0
013.Nginx动静分离
Nginx代理的几种模式
原文:https://www.cnblogs.com/gbq-dog/p/10653054.html
周星星9527
2021/06/22
3.6K0
Nginx代理的几种模式
nginx的配置、虚拟主机、负载均衡和反向代理(2)
上一篇中,我仔细了学习了一下nginx的各个模块的详细讲解,基本对它的一个整体有了一个把握。这一篇就来几个实际的例子来看下虚拟主机、负债均衡和反向代理,是如何做到的。
bear_fish
2018/09/19
1.2K0
基于CentOS 7配置Nginx反向代理
Nginx作为反向代理服务器被广泛使用在各大互联网企业。它简单易用,可以根据业务的需求将其不同的业务类型代理至不同的服务器,将整个站点请求压力按类型分摊到不同的服务器。该方式使的整个站点请求性能得以极大的提升。本文简要描述了Nginx几种不同情形的代理演示,供大家参考。
Leshami
2018/08/06
2.2K0
基于CentOS 7配置Nginx反向代理
万字总结,体系化带你全面认识 Nginx !
作为一名开发人员,你是不是经常碰到领导让你上服务器去修改 Nginx 配置,然而你可能会对这些配置并不熟悉!今天就让我们一起告别这种尴尬,向“真正”的程序员迈进!!!
入门笔记
2022/06/02
7760
万字总结,体系化带你全面认识 Nginx !
Nginx 介绍
Nginx是一款自由的、开源的、高性能的HTTP服务器和 反向代理 服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
IT茂茂
2020/03/05
2.2K0
Nginx 介绍
Nginx
服务器架构集群(分布式服务器架构):多台服务器组成的相应大并发、高数量访问的架构系统。 特点:成本高; 降低单台服务器压力,使流量平均分配到多台服务器; 使网络服务架构更加稳定。
matt
2022/10/25
4450
Nginx
手拉手一起搞透Nginx !!
NGINX联合创始人安德鲁·阿列克谢夫(Andrew Alexeev)曾说:NGINX是为对Apache性能不满意的人而构建的。随着Internet需求的变化,Web服务器的工作也在变化。NGINX的构建比以往任何时候都更有效率,更可扩展,更安全,更强大。
架构师修行之路
2020/10/23
5220
手拉手一起搞透Nginx !!
万字总结,体系化带你全面认识 Nginx !
作为一名前端开发人员,你是不是经常碰到领导让你上服务器去修改 Nginx 配置,然而你会以“我是前端,这个我不会”为理由搪塞过去呢!今天就让我们一起告别这种尴尬,向“真正”的程序员迈进!!!
iMike
2021/04/16
1.2K0
05 . Nginx的反向代理与负载均衡
Nginx负载均衡 客户端的访问都被代理到后端的一台服务器上,最终会出现性能瓶颈,从而导致效率降低,前端用户的访问速度急速下降,要解决这个问题就需要添加多台httpd,同时承受大量并发连接,每台服务器接收的并发连接降低了,效率就高了,nginx作为代理,在收到客户端的请求时,会分发到不同的后端服务器,但是nginx收到请求之后会分配到那个服务器之上,有什么规律和需求,就需要用调度算法来分配. upstream语法 # upstream的定义必须在server{..}外定义 upstream <组名
iginkgo18
2020/09/27
9430
Nginx安装、实现反向代理及深度优化
一、Nginx的安装 关于Nginx的基本概念,在之前的博文中:https://blog.51cto.com/14227204/2464167 有详细的介绍,这篇博文就直接从安装开始谈起。
小手冰凉
2020/02/11
3.4K0
Nginx安装、实现反向代理及深度优化
NGINX从入门到实践-基础篇
爬虫与反爬虫的较量总是围绕着Web网站展开,爬虫的主要目的是获取Web网站中的内容。开发者想要限制爬虫获取数据,就需要了解HTML从文档变成内容丰富的页面所要经历的每个阶段。例如网络请求、资源匹配、数据传输和页面渲染。因此在学习爬虫之前,我们需要先了解web网站的构成和页面渲染过程的相关知识。
小志Codings
2021/12/21
6810
NGINX从入门到实践-基础篇
Nginx---反向代理,SSL支持
简而言之就是正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。
大忽悠爱学习
2021/12/07
7810
Nginx---反向代理,SSL支持
Web服务器-Nginx正向代理和4层代理
作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2025/04/10
3730
Web服务器-Nginx正向代理和4层代理
代理技术 | 重磅,代理服务器背后的故事(正向、反向代理)
传说中的代理服务技术是一门很古老的技术,互联网早期就已经出现,一般来说,实现实现代理技术的实现就是在服务器上安装代理软件,成为代理服务器,从而配置\实现代理技术。 其实网络代理的玩法真的很多。之前知道如何使用,今天我们看看代理背后的故事。 我们以nginx为例,常用的代理技术有:正向代理、反向代理和透明代理。真正项目中常用的是反向代理和正向代理,透明代理我们了解一下就可以,本文重点讲正向代理和反向代理。 老规矩,走一波概念: 1
码神联盟
2018/04/02
2.3K0
代理技术 | 重磅,代理服务器背后的故事(正向、反向代理)
Nginx系列教程(二)| 一文带你读懂Nginx的正向与反向代理
正向代理:你可以这样理解,就是把局域网以外的 Internet 想象成一个外网世界,那么当我们局域网中的客户端设备要访问局域网以外的 Internet 时,需在客户端浏览器中配置代理服务器,然后通过代理服务器来进行访问,将访问到的局域网以外的 Internet 网站内容返回给客户端,而不是通过局域网中的客户端设备直接访问到局域网以外的 Internet 网站中,这种代理服务称之为:正向代理。
杰哥的IT之旅
2020/06/18
1.6K0
Nginx系列教程(二)| 一文带你读懂Nginx的正向与反向代理
Nginx反向代理与负载均衡
在做需求的时候,有时候会和别的三方系统交互,如调用一个第三方系统的http接口查询商品物流信息,获得响应数据返回给我们自己系统的前端页面进行展示,整个流程会遇到什么样的问题呢,现在整理一下。
编程大道
2019/10/15
1.3K0
Nginx反向代理与负载均衡
nginx代理(正向代理和反向代理)
  是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端(目的是为了保护客户端用户)
码缘
2019/08/14
2.7K0
nginx安装和配置详解
nginx下载地址:http://nginx.org/en/download.html Windows直接选择合适的版本下载,解压后双击nginx.exe执行,访问http://localhost即可 Linux下载安装可以查看我这篇文章:Linux下安装和使用Nginx
共饮一杯无
2022/11/28
9440
【送书活动九期】配置nginx代理转发实现跨域
反向代理,只要是结合着负载均衡的,就是反向代理,也就是使用proxy_pass加上upstream参数
鲲志说
2025/04/07
2320
【送书活动九期】配置nginx代理转发实现跨域
推荐阅读
相关推荐
013.Nginx动静分离
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档