Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MyBaits多数据源配置

MyBaits多数据源配置

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

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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Boot集成MyBatis实现多数据源访问的“秘密”
在企业级应用程序中,往往需要处理多个数据库的数据。Spring Boot提供了强大的功能,使得集成多数据源变得相对容易。本文将揭示Spring Boot集成MyBatis实现对多数据源的访问的“秘密”,并通过实例代码来演示整个过程。
IT_陈寒
2023/12/14
3160
Spring Boot集成MyBatis实现多数据源访问的“秘密”
Springboot 之 Mybatis 多数据源实现
上篇讲解了 JPA 多数据源实现;这篇讲解一下 Mybatis 多数据源实现 。主要采用将不同数据库的 Mapper 接口分别存放到不同的 package,Spring 去扫描不同的包,注入不同的数据源来实现多数据源。原理跟 JPA 多数据源实现基本一致。
BUG弄潮儿
2022/12/05
1.6K0
Springboot 之 Mybatis 多数据源实现
SpringBoot整合多数据源
最近有一个需求,需要把安某服务器中MySQL中的数据导入到另一个MySQL中,当时感觉导出到xxx.sql,然后导入进新的数据库,发现MySQL导出到xxx.sql已经实现不了了,每次导出都会卡住,时间继续,但是导出条数一直不变,后来就想了个比较 笨的方法,就是查数据库1,然后插入数据库2,所以需要SpringBoot整合多数据源,从而记录搭建环境的过程。
CBeann
2023/12/25
2550
SpringBoot整合多数据源
Spring Boot 2.x基础教程:MyBatis的多数据源配置
前两天,我们已经介绍了关于JdbcTemplate的多数据源配置以及Spring Data JPA的多数据源配置,接下来具体说说使用MyBatis时候的多数据源场景该如何配置。
程序猿DD
2020/07/02
9760
Spring Boot 2.x基础教程:MyBatis的多数据源配置
SpringBoot 的多数据源配置
最近在项目开发中,需要为一个使用 MySQL 数据库的 SpringBoot 项目,新添加一个 PLSQL 数据库数据源,那么就需要进行 SpringBoot 的多数据源开发。代码很简单,下面是实现的过程。 环境准备
未读代码
2021/01/04
6.3K0
SpringBoot 的多数据源配置
SpringBoot 多数据源 配置
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!
收心
2022/01/17
6030
SpringBoot之SpringBoot整合多数据源
本来按照视屏来说,到上一章的打包运行就没有了,但是我百度翻了好一大波,找到了他的上一期中的其他剩余视屏
彼岸舞
2021/02/02
8000
完整Demo:springboot实现多数据源配置
公司有一套人脸识别动态布控系统,该系统有两个子系统组成,识别算法采用C++编写,后台管理系统采用Java编写,C程序提供HTTP接口供Java程序调用,两个程序都是本地化部署。现在有个问题,C程序是南理工学生写的,需求响应不及时,接口不能立马提供,所以考虑由Java程序配置多数据源直接读C程序的数据库。
架构师小跟班
2019/08/07
1.8K0
完整Demo:springboot实现多数据源配置
Spring Boot 2.X(五):MyBatis 多数据源配置
MyBatis 多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度。本文直接以简单的代码示例,如何对 MyBatis 多数据源配置。
朝雾轻寒
2019/10/18
8360
Spring Boot 2.X(五):MyBatis 多数据源配置
【SpringBoot DB系列】Mybatis多数据源配置与使用
上一篇博文介绍 JdbcTemplate 配置多数据源的使用姿势,在我们实际的项目开发中,使用 mybatis 来操作数据库的可能还是非常多的,本文简单的介绍一下 mybatis 中,多数据源的使用姿势
一灰灰blog
2021/01/20
4170
【SpringBoot DB系列】Mybatis多数据源配置与使用
Spring Boot2(四):使用Spring Boot实现多数据源过程
实际业务场景中,不可能只有一个库,所以就有了分库分表,多数据源的出现。实现了读写分离,主库负责增改删,从库负责查询。这篇文章将实现Spring Boot如何实现多数据源,动态数据源切换,读写分离等操作。
鸟不拉屎
2019/07/03
1.5K0
【SpringBoot DB系列】Mybatis多数据源配置与使用
上一篇博文介绍 JdbcTemplate 配置多数据源的使用姿势,在我们实际的项目开发中,使用 mybatis 来操作数据库的可能还是非常多的,本文简单的介绍一下 mybatis 中,多数据源的使用姿势
一灰灰blog
2021/01/17
1.6K0
【SpringBoot DB系列】Mybatis多数据源配置与使用
Spring Boot 如何整合多个数据源?
SpringBoot现在是很多很多公司应用的后端框架,因为它搭建快,能更好、更快速的整合其他第三方。那么随着业务的不断扩展,业务量的增加,这时候就会牵扯到分库分表,虽然这个词听起来很熟悉,作为程序员也很容易理解,但是我想应该也有不少读者没接触过分库分表,今天我们不聊如何分库分表,而是聊SpringBoot如何整合多个数据源的事情。也就是如何接入不同的(多个)数据库。
Java_老男孩
2019/12/02
6880
spring Boot 整合mybatis 如何使用多数据源
前言 本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于springboot以及mybatis不在此进行展开介绍,如有读者希望了解可以给我留言,并持续关注,我后续会慢慢更新。(黑色区域代码部分,安卓手机可手动向左滑动,来查看全部代码) 整合 其实整合很简单,如果是用gradle的话,在build.gradle文件里加入 compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1
互扯程序
2018/01/31
1.7K0
spring Boot 整合mybatis 如何使用多数据源
极简Spring Boot整合MyBatis多数据源
关于多数据源的配置,前面和大伙介绍过JdbcTemplate多数据源配置,那个比较简单,本文来和大伙说说MyBatis多数据源的配置。 其实关于多数据源,我的态度还是和之前一样,复杂的就直接上分布式数据库中间件,简单的再考虑多数据源。这是项目中的建议,技术上的话,当然还是各种技术都要掌握的。
江南一点雨
2019/08/30
4670
极简Spring Boot整合MyBatis多数据源
充电桩项目实战:搞定多数据源!
最近,我在对充电桩项目进行微服务升级中,既然是项目升级,难免会遇到各种各样的问题。比如:分布式事务问题、多数据源问题、分布式锁问题等。
田维常
2024/01/29
3340
充电桩项目实战:搞定多数据源!
SpringBoot系列-- Mybatis配合AOP和注解实现动态数据源切换配置
随着应用用户数量的增加,相应的并发请求的数量也会跟着不断增加,慢慢地,单个数据库已经没有办法满足我们频繁的数据库操作请求了。
田维常
2020/02/13
1.1K0
SpringBoot系列-- Mybatis配合AOP和注解实现动态数据源切换配置
springboot多数据源配置和使用
这个直接把多个数据库连接信息写上即可,用spring.datasource属性进行配置,如下:
用户7634691
2020/08/10
3.1K0
SpringBoot 配置多数据源
项目Git地址:SpringBoot 配置多数据源:Jacob-multi-data-source
Jacob丶
2020/08/05
7900
Spring Boot 1.0 && 2.0 + Mybatis 多数据源配置与使用
mysql 对应的数据源配置中,定义了实体 Boy 和对应的数据层接口 BoyMapper:
happyJared
2018/12/19
1.2K0
推荐阅读
相关推荐
Spring Boot集成MyBatis实现多数据源访问的“秘密”
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验