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

MyBaits多数据源配置

作者头像
晓果冻
发布于 2022-09-08 03:23:25
发布于 2022-09-08 03:23:25
77300
代码可运行
举报
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
完整Demo:springboot实现多数据源配置
公司有一套人脸识别动态布控系统,该系统有两个子系统组成,识别算法采用C++编写,后台管理系统采用Java编写,C程序提供HTTP接口供Java程序调用,两个程序都是本地化部署。现在有个问题,C程序是南理工学生写的,需求响应不及时,接口不能立马提供,所以考虑由Java程序配置多数据源直接读C程序的数据库。
架构师小跟班
2019/08/07
1.8K0
完整Demo:springboot实现多数据源配置
SpringBoot之SpringBoot整合多数据源
本来按照视屏来说,到上一章的打包运行就没有了,但是我百度翻了好一大波,找到了他的上一期中的其他剩余视屏
彼岸舞
2021/02/02
7880
Springboot 之 Mybatis 多数据源实现
上篇讲解了 JPA 多数据源实现;这篇讲解一下 Mybatis 多数据源实现 。主要采用将不同数据库的 Mapper 接口分别存放到不同的 package,Spring 去扫描不同的包,注入不同的数据源来实现多数据源。原理跟 JPA 多数据源实现基本一致。
BUG弄潮儿
2022/12/05
1.6K0
Springboot 之 Mybatis 多数据源实现
SpringBoot实现多数据源
具体的代码逻辑不再赘述,源代码地址【https://github.com/gmg0829/SpringbootLearningExample/tree/master/Springboot-MultiDataSource】
分母为零
2019/07/04
3740
Spring配置多数据源实战
这里我们只演示同一个mysql下面的不同的两个库,主要采取分包的形式来区分不同的数据源:
Dream城堡
2022/01/07
5620
SpringBoot整合多数据源
最近有一个需求,需要把安某服务器中MySQL中的数据导入到另一个MySQL中,当时感觉导出到xxx.sql,然后导入进新的数据库,发现MySQL导出到xxx.sql已经实现不了了,每次导出都会卡住,时间继续,但是导出条数一直不变,后来就想了个比较 笨的方法,就是查数据库1,然后插入数据库2,所以需要SpringBoot整合多数据源,从而记录搭建环境的过程。
CBeann
2023/12/25
2470
SpringBoot整合多数据源
SpringBoot整合MyBatis多数据源
在平常的项目中,我们有连接数据库的需求。一般都是一个项目一个数据库,但也有例外需要连接多个数据库的。
半月无霜
2023/03/03
1.2K0
SpringBoot整合MyBatis多数据源
Spring Boot MyBatis配置多数据源
项目中有时候需要用到多数据源,但是Spring Boot的自动配置并不支持,所以需要手动做很多工作,其实也不难 整体架构 项目架构 添加依赖 <dependency> <groupId>o
十毛
2019/04/29
7570
Spring Boot MyBatis配置多数据源
springboot多数据源配置和使用
这个直接把多个数据库连接信息写上即可,用spring.datasource属性进行配置,如下:
用户7634691
2020/08/10
3.1K0
Spring Boot集成MyBatis实现多数据源访问的“秘密”
在企业级应用程序中,往往需要处理多个数据库的数据。Spring Boot提供了强大的功能,使得集成多数据源变得相对容易。本文将揭示Spring Boot集成MyBatis实现对多数据源的访问的“秘密”,并通过实例代码来演示整个过程。
IT_陈寒
2023/12/14
3000
Spring Boot集成MyBatis实现多数据源访问的“秘密”
Spring Boot 2.X(五):MyBatis 多数据源配置
MyBatis 多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度。本文直接以简单的代码示例,如何对 MyBatis 多数据源配置。
朝雾轻寒
2019/10/18
8210
Spring Boot 2.X(五):MyBatis 多数据源配置
SpringBoot 的多数据源配置
最近在项目开发中,需要为一个使用 MySQL 数据库的 SpringBoot 项目,新添加一个 PLSQL 数据库数据源,那么就需要进行 SpringBoot 的多数据源开发。代码很简单,下面是实现的过程。 环境准备
未读代码
2021/01/04
6.2K0
SpringBoot 的多数据源配置
Spring Boot 2.x基础教程:MyBatis的多数据源配置
前两天,我们已经介绍了关于JdbcTemplate的多数据源配置以及Spring Data JPA的多数据源配置,接下来具体说说使用MyBatis时候的多数据源场景该如何配置。
程序猿DD
2020/07/02
9490
Spring Boot 2.x基础教程:MyBatis的多数据源配置
极简Spring Boot整合MyBatis多数据源
关于多数据源的配置,前面和大伙介绍过JdbcTemplate多数据源配置,那个比较简单,本文来和大伙说说MyBatis多数据源的配置。 其实关于多数据源,我的态度还是和之前一样,复杂的就直接上分布式数据库中间件,简单的再考虑多数据源。这是项目中的建议,技术上的话,当然还是各种技术都要掌握的。
江南一点雨
2019/08/30
4640
极简Spring Boot整合MyBatis多数据源
Spring Boot 1.0 && 2.0 + Mybatis 多数据源配置与使用
mysql 对应的数据源配置中,定义了实体 Boy 和对应的数据层接口 BoyMapper:
happyJared
2018/12/19
1.2K0
SpringBoot+Druid+Mybatis配置多数据源
我们在开发一个项目的时候,可能会遇到需要对多个数据库进行读写的需求,这时候就得在项目中配置多个数据源了。在Java项目的开发中,目前最常用的数据操作框架是 Mybatis,开发框架也都基本用上了SpringBoot。而Druid号称最好的数据库连接池,自然也是被广泛使用。
端碗吹水
2020/09/24
7.5K0
SpringBoot系列-- Mybatis配合AOP和注解实现动态数据源切换配置
随着应用用户数量的增加,相应的并发请求的数量也会跟着不断增加,慢慢地,单个数据库已经没有办法满足我们频繁的数据库操作请求了。
田维常
2020/02/13
1.1K0
SpringBoot系列-- Mybatis配合AOP和注解实现动态数据源切换配置
SpringBoot配置多数据源实战
当相关业务场景想实现同时操作2个甚至多个不同数据库表的时候,就需要配置多个数据源。
刘大猫
2024/11/14
1230
SpringBoot 多数据源 配置
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!
收心
2022/01/17
5670
Spring Boot 如何整合多个数据源?
SpringBoot现在是很多很多公司应用的后端框架,因为它搭建快,能更好、更快速的整合其他第三方。那么随着业务的不断扩展,业务量的增加,这时候就会牵扯到分库分表,虽然这个词听起来很熟悉,作为程序员也很容易理解,但是我想应该也有不少读者没接触过分库分表,今天我们不聊如何分库分表,而是聊SpringBoot如何整合多个数据源的事情。也就是如何接入不同的(多个)数据库。
Java_老男孩
2019/12/02
6630
相关推荐
完整Demo:springboot实现多数据源配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档