SpringBoot+MyBatis多数据源使用

Springboot整合mybatis多数据源 场景1:一个商城网站,一个游戏网站,商城网站已经做好,游戏网站正在开发,游戏网站上的很多道具需要用到商城网站的产品数据,这种情况最好是用两个数据库,商城网站更多的是设计直接交易,涉及金钱方面较多,需要较安全的数据库和网络环境,而游戏网站一般人流量比较大,若和商城放一起占用的数据库、网络、带宽资源较大,而且更容易被攻击,这样很容易影响商城 的正常使用。而把他们独立开虽然可能成本稍高,但是能够保证其中一个网站或数据库挂掉不会影响另一个,大大降低安全风险。场景2:随着时间和业务的发展,数据库中的数据量增长是不可控 阅读详情

项目中需要使用多个数据源,可进行一下配置。

1.首先在配置文件application.yaml中配置多个数据源。

spring:
  datasource:
    online:
      name: online
      jdbc-url: jdbc:mysql://127.0.0.1:3306/xxxuseSSL=false&characterEncoding=utf8&autoReconnect=true
      username: root
      password: xx
      # 使用druid数据源
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.jdbc.Driver
      maxActive: 20
      initialSize: 1
      maxWait: 60000
      minIdle: 1
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxOpenPreparedStatements: 20
    test:
      name: test
      jdbc-url: jdbc:mysql://127.0.0.1:3306/xxx-finance?useSSL=false&characterEncoding=utf8&autoReconnect=true
      username: root
      password: xx.x
      # 使用druid数据源
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.jdbc.Driver
      maxActive: 20
      initialSize: 1
      maxWait: 60000
      minIdle: 1
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: select 'x'
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxOpenPreparedStatements: 20
## 该配置节点为独立的节点,有很多同学容易将这个配置放在spring的节点下,导致配置无法被识别
mybatis:
  mapper-locations: classpath:mapping/*.xml  #注意:一定要对应mapper映射xml文件的所在路径
  type-aliases-package: com.lj.cmslive.model  # 注意:对应实体类的路径

#日志相关配置
logging:
  level:
    root : info
  file: ./log/scrawl.log

2.新建配置文件类。

package com.linjiao.cmslive.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**
 * # @Configuration 注册到springboot容器,相当于原来xml文件里的<beans>
 * # @@MapperScan下面要进行扫包,目的是标清楚为谁添加的数据源,这样对应的包里函数执行数据库操作的时候,
 * 就知道要执行的数据库账号密码,表,以及事务处理之类的。
 */
@Configuration
@MapperScan(value = "com.linjiao.cmslive.mapper.online", sqlSessionFactoryRef = "onlineSqlSessionFactory")
public class OnlineDataSourceConfig {

    /**
     * # @Bean(name = "x") 注入到这个容器
     * # @Qualifier("xxx") 的含义是告诉他使用哪个DataSource
     * # @ConfigurationProperties(prefix ="") 表示取配置文件中的前缀
     */
    @Bean(name = "onlineDataSource")
    @Qualifier("onlineDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.online")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * # @Primary 因为有多个数据源,在没有明确指定用哪个的情况下,会用带有primary的,这个注解必须有一个数据源要添加
     *
     * @param dataSource
     * @return
     * @throws Exception
     */
    @Bean(name = "onlineSqlSessionFactory")
    @Primary
    public SqlSessionFactory sentinelSqlSessionFactory(@Qualifier("onlineDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapping/online/*.xml"));
        return bean.getObject();
    }
}

3.同理配置其他的数据源。在service中注入mapper就可以使用了。

20分钟搞定 SpringBoot+Mybatis+多数据源 20分钟快速集成Springboot+Mybatis+多数据源 阅读详情

相关推荐

MyBatis整合Springboot多数据源实现

数据源,实际就是数据库连接池,负责管理数据库连接,在Springboot中,数据源通常以一个bean的形式存在于IOC容器中,也就是我们可以通过依赖注入的方式拿到数据源,然后再从数据源中获取数据库连接。那么什么是多数据源呢,其实就是IOC容器中有多个数据源的bean,这些数据源可以是不同的数据源类型,也可以连接不同的数据库。本文将对多数据如何加载,如何结合MyBatis使用进行说明,知识点脑图如下所示。数据源,其实就是数据库连接池,负责数据库连接的管理和借出。目前使用较多也是性能较优的有如下几款数据源。

m0_71777195的博客 2303

springboot+mybatis实现多数据源配置

springboot+mybatis实现多数据源配置

ldcaws的专栏 9762

Spring Boot整合MyBatis多数据源

Spring Boot整合MyBatis多数据源   对于Spring Boot 整合JdbcTemplate多数据源,此方式相对比较复杂一些,没有整合JdbcTemplate多数据源相对简单一些,但此方式也是一种技术,我们也是要掌握的。 创建工程 首先我们需要创建一个Spring Boot 项目工程,并且添加Mybatis、Mysql以及web的相关依赖: 创建好项目后,由于我们每个人的数据库...

知性人 -- 的博客 2726

springboot+mybatis实现多数据源

springboot+mybatis实现多数据源

qq_32603429的博客 4006

SpringBoot系列:Spring Boot多数据源,Mybatis动态数据源方式

一、Mybatis配置多数据源 前面讲了Mybatis配置多数据源配置的包路径分库方式——SpringBoot系列:Spring Boot多数据源,Mybatis方式,这种方式实现多数据源,以包区分,清晰明了,但是很多时候会造成很多代码冗余,比如举例中的userDao,而且新增包需要去修改配置文件。实际中一般并不采用这种方式,而是使用aop,这次就来讲解aop实现动态多数据源。 aop实现多数据源...

Simple_Yangger的博客 664

SpringBoot系列:Spring Boot多数据源,Mybatis方式

一、Mybatis配置多数据源 mybatis可谓是国内最火的ORM框架了,mybatis的多数据源当然在实际使用中也必不可少。mybatis多数据源一般有两种方式,一种是基于不同的包使用不同的数据源,这个类似于JPA配置多数据源,另一种则是注解+aop实现。 本章节就来看一看使用不同的包怎么做到多数据源。 首先是pom文件,除了SpringBoot的依赖外,主要就是mybatis及数据库的依赖了...

Simple_Yangger的博客 629

SpringBoot+MyBatis 配置多数据源 (两种方式实现)

在项目的开发中 , 有时候会涉及到多个数据库的访问 , 也就是多个数据源; 下面记录一下如何使用SpringBoot + MyBatis配置多数据源. 首先使用IDEA搭建一个SpringBoot项目 , 我使用的是JDK1.8 ,SpringBoot版本为1.5.12.RELEASE , 另外添加一些起步依赖 &lt;dependency&gt; &lt;groupId&gt;org...

qq_38167579的博客 3万+

Springboot - 使用mybatis 构建多数据源应用

文章目录Springboot - 使用mybatis 构建多数据源应用1、初始化2个数据库3、初始化数据4、创建一个springboot 应用5、编写配置文件 Springboot - 使用mybatis 构建多数据源应用 1、初始化2个数据库 使用docker 构建2个数据库 docker run --name mysql-1 -p 3306:3306 -d -e MYSQL_ROOT_PA...

简简单单Onlinezuozuo 6265

springboot-mybatis多数据源的两种整合方法

springboot-mybatis整合多数据源 简介: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;随着并发量的不断增加,显然单个数据库已经承受不了高并发带来的压力。一个项目使用多个数据库(无论是主从复制- - 读写分离还是分布式数据库结构)的重要性变得越来越明显。传统项目中(个人对传统项目的理解就是所有的业务模块都在一个tomcat中完成,多个相

一只仰望天空的菜鸟 17万+

Spring Boot与MyBatis整合及多数据源管理实战指南

本文还有配套的精品资源,点击获取 简介:Spring Boot作为一个简化Spring应用开发的工具,与MyBatis框架结合使用时,可以实现快速开发和高效数据访问层。本项目分为两个模块: test1 主要介绍Spring Boot基础搭建和与MyBatis的集成, test2 则重点阐述如何构建多数据源。通过详细的实践操作,开发者可以学会如何在...

weixin_35935514的博客 1927

DINOv2 基于自定义数据集进行图片分类预测

(前提是安装好pytorch)1. pip安装2. 下载dinov2提供的预训练模型,需要自行前往网站上查找dinov2模型进行下载。模型需要下载三个文件:下载完成后将上述三个文件放置在本地一个名为dinov2_base的文件夹中即可。

sinat_34770838的博客 6666

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE正常情况下我们在开发系统的时候都是使用一个数据源,但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大,便会一个项目对应多个数据源,即就会有个问题,Springboot配置db都是默认加载数据源连接,连接池默认配置,但是配置多个数据库url,这该怎么实现呢?

m0_74824534的博客 1310

从材料到磁场:ANSYS Workbench永磁体仿真全流程解析

本文详细解析了在ANSYS Workbench中进行永磁体仿真的完整流程。从钕铁硼等永磁材料的特性讲起,逐步指导如何在软件中搭建模型、定义关键磁化方向、设置边界条件与网格划分,并解读磁场分布结果。文章旨在帮助工程师掌握静磁场仿真核心技术,为电机、传感器等设备的设计与优化提供精准指导。

weixin_29229989的博客 273

✨MyBatis✨整合Springboot多数据源实现

数据源,实际就是数据库连接池,负责管理数据库连接,在Springboot中,数据源通常以一个bean的形式存在于IOC容器中,也就是我们可以通过依赖注入的方式拿到数据源,然后再从数据源中获取数据库连接

用朴素的话说技术。 1030

从零搭建宝兰德BES单机版:分离式安装、环境变量配置到控制台访问的避坑指南

本文详细介绍了从零搭建宝兰德BES单机版的完整流程,包括分离式安装、环境变量配置和控制台访问的避坑指南。针对中间件安装部署中的常见问题,提供了账号规划、JDK配置、实例创建和防火墙设置等实用解决方案,帮助开发者和运维人员高效完成BES中间件的部署工作。

weixin_32576389的博客 375

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2123

实战指南,SpringBoot + Mybatis 如何对接多数据源

在我们开发一些具有综合功能的项目时,往往会碰到一种情况,需要同时连接多个数据库,这个时候就需要用到多数据源的设计。而Spring 与 Myabtis 其实做了多数据源的适配,只需少许改动即可对接多数据源。本期我们就贴近实战,以一个单数据源的Demo为例,讲述将其改为多数据源项目的过程,希望大家能有所体会`

战斧的博客 1万+

Isaac Lab 强化学习全身控制策略 Sim2Real 宇树人形机器人训练部署 HOVER

《IsaacLab策略训练与部署指南》提供了在仿真和真实机器人上实现HOVER全身控制策略的完整流程。主要内容包括:1) Linux环境下的IsaacLab安装与HOVER资源库配置;2) 使用1024个并行环境训练教师/学生策略的详细步骤;3) 策略测试与评估方法;4) Sim2Sim仿真验证和Sim2Real真实机器人部署方案。本教程特别针对Unitree H1仿人机器人,包含运动数据准备、策略训练、性能评估到硬件部署的全链条实现方案,为机器人控制策略开发提供标准化参考框架。

机器人控制与仿真应用 3071

SpringBoot使用MyBatis多数据源

SpringBoot使用MyBatis多数据源

YIYIYI 789

手把手完整实现STM32+LORA组网网关+机智云平台+手机APP应用———第一节- 一主多从的LORA本地组网通信-实现从机采集温湿度与主机显示数据

本教程为《手把手实现STM32+LORA组网网关+机智云平台+手机APP应用》第一节。实现一个主机,两个从机的LORA组网通信。两个从机采集温湿度数据并通过LORA传输数据到主机,然后主机接收到两个从机数据后进行数据显示,本节通过PC串口助手显示两个从机的数据。 下一节将其主机接收的数据通过WIFI网关(ESP8266)传到机智云平台与手机APP。 本文讲解一主多从的LORA本地组网通信,串口助手进行数据展示。使用硬件主要包括:STM32F103C8T6最小系统板(3个)、正点原子LORA模块ATK-L

嵌入式阿齐Archie 1万+

人形机器人硬件电路设计入门

人形机器人属于。

blotemj.blog.youkuaiyun.com 232

SpringBoot下配置Mybatis多数据源

spring boot 整合mybatis 多数据源。对于现在的web项目来说,很多大一点的项目都是微服务框架,这就导致web项目需要访问多个数据源,每一个小的模块是一个自己独立的数据源。这时候就需要配置多数据源了,对于多数据源,spring boot支持就是需要配置一个主数据源,若干个非主数据源,可以实现自由切换。只是实现数据源bean注入的时候需要注意一下,主数据源需要加上@Primary注解,其他非主数据源一定不能加@Primary注解,否者启动报错。

tianhouquan的专栏 1879

YOLOv11-seg 改进系列 | 引入原创 RSCD 重参数共享卷积分割头,增强 Head 表达力并压低计算量

本文提出一种改进的YOLOv11-seg分割头Segment_RSCD,通过重参数共享卷积增强表达能力。该模块在LSCD共享检测头基础上引入DiverseBranchBlock重参数卷积,保留三尺度预测与Proto掩码原型接口不变。相比原始Segment头,Segment_RSCD参数增加4%但计算量降低1.3%,在共享卷积结构中通过多分支补偿表达能力损失,同时利用Scale层保持尺度差异校准。该方法不改动Backbone/Neck结构,仅重构检测/分割头,实现训练期多路径聚合与部署期等效单分支的平衡。

qq_44224801的博客 185

springboot结合mybatis使用多数据源的方式

至此方式一解决了不同库数据同步问题,但是有个问题需要考虑 ,示例是写一张表,如果写入成百上千张表呢,mapper是不是要double,这里采用动态路由的方式切换数据源,如下。测试结果跟上面一致,但是还会有一个问题:动态切换数据源在表很多的前提下还是会增大系统开销,浪费系统资源。bank2中目前是空的。

一步一个脚印_binding 1714

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MyBatis-Flex多数据源:在SpringBoot3中使用MyBatis-Flex实现多数据源

本文所指的多数据源,指的是:单个服务 使用 多个数据源。 在SpringBoot3集成MyBatis-Flex后,使用框架提供的多数据源功能,能够实现单个服务使用多个数据源。

宋冠巡的博客 4000

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: java发送钉钉消息到群(通过机器人)
下一篇: github创建仓库提交代码及常用git命令
codeLife1993
博客等级 码龄8年 23粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值