当前位置: 首页 > news >正文

spring boot 配置 mybatis-plus多数据源

简介

Mybatis-puls 多数据源的使用,采用的是官方提供的dynamic-datasource-spring-boot-starter包的 @DS 注解,具体可以参考官网:

https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter

pom.xml文件引入如下依赖

主要引入dynamic-datasource-spring-boot-starter

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.olive</groupId><artifactId>mybatis-plus-multip-datasource</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>mybatis-multip-datasource</name><url>http://maven.apache.org</url><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.14</version><relativePath /> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency></dependencies>
</project>

配置两个数据源

分别为第一个主数据源(primary),第二数据源(slave_1),具体配置如下:

# 基本配置
server:port: 8080# 数据库
spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://127.0.0.1:3306/db01?characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=trueusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置slave_1:url: jdbc:mysql://127.0.0.1:3306/crm72?characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=trueusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:mapper-locations: mapper/*.xmltype-aliases-package: com.olive.entityconfiguration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpl

创建学生与老师实体类

学生实体类

package com.olive.entity;import java.io.Serializable;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@TableName("t_student")
@Data
public class StudentDO implements Serializable{@TableId(value="id", type = IdType.AUTO)private Long id;@TableField("user_name")private String name;@TableField("sex")private int sex;@TableField("grade")private String grade;
}

老师实体类

package com.olive.entity;import java.io.Serializable;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;@Data
@TableName("t_teacher")
public class TeacherDO implements Serializable {@TableId(value = "id", type = IdType.AUTO)private Long id;@TableField("user_name")private String name;@TableField("sex")private int sex;@TableField("office")private String office;
}

数据库持久类

StudentMapper持久类

package com.olive.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.olive.entity.StudentDO;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface StudentMapper extends BaseMapper<StudentDO> {}

TeacherMapper持久类

package com.olive.mapper;import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.olive.entity.TeacherDO;
import org.apache.ibatis.annotations.Mapper;@DS("slave_1")
@Mapper
public interface TeacherMapper extends BaseMapper<TeacherDO> {}

以上,两个持久类的实现都是继承BaseMapper基类,该类提供了基本的增删改查的方法;要注意的是,TeacherMapper 类使用了@DS("slave_1")指定了数据源;而StudentMapper没有指定,使用的是默认的数据源。

服务类的实现

先定义操作学生和老师的两个接口

StudentService接口

package com.olive.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.olive.entity.StudentDO;public interface StudentService extends IService<StudentDO> {
}

TeacherService接口

package com.olive.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.olive.entity.TeacherDO;public interface TeacherService extends IService<TeacherDO> {
}

再定义接口的实现类

StudentServiceImpl类

package com.olive.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.olive.entity.StudentDO;
import com.olive.mapper.StudentMapper;
import com.olive.service.StudentService;
import org.springframework.stereotype.Service;@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, StudentDO>implements StudentService {
}

TeacherServiceImpl类

package com.olive.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.olive.entity.TeacherDO;
import com.olive.mapper.TeacherMapper;
import com.olive.service.TeacherService;
import org.springframework.stereotype.Service;@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, TeacherDO>implements TeacherService {}

相关文章:

spring boot 配置 mybatis-plus多数据源

简介Mybatis-puls 多数据源的使用&#xff0c;采用的是官方提供的dynamic-datasource-spring-boot-starter包的 DS 注解&#xff0c;具体可以参考官网&#xff1a;https://gitee.com/baomidou/dynamic-datasource-spring-boot-starterpom.xml文件引入如下依赖主要引入dynamic-d…...

独立产品灵感周刊 DecoHack #047 - 安卓手机上最有用的APP

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Bouncer Tempor…...

【面试题】JavaScript中递归的理解

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库递归 RecursionTo iterate is human, to recurse, divine. 理解迭代&#xff0c;神理解递归。本文会以 JavaScript为主、有部分 Rust 举例说明。…...

PyTorch学习笔记

PyTorch学习笔记&#xff08;一&#xff09;&#xff1a;PyTorch环境安装 往期学习资料推荐&#xff1a; 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 安装参考&#xff1a; 1.视频教程&#xff1a;3分钟深度学习【环境搭建】CUDA Anacon…...

SpringBoot2知识点记录

SpringBoot2知识点记录1.SpringBoot2基础入门1.1 环境要求1.1.1 maven设置1.2 第一个程序 HelloWorld1.2.1 创建maven工程1.2.2 引入依赖1.2.3 创建主程序1.2.4 编写业务1.2.5 测试1.2.6 简化配置1.2.7 简化部署1.3 自动装配1.3.1 SpringBoot特点1.3.1.1 依赖管理1.3.1.2 自动装…...

Mysql

1 Sql编写 count(*) //是对行数目进行计数 count(column_name) //是对列中不为空的行进行计数 SELECT COUNT( DISTINCT id ) FROM tablename; //计算表中id不同的记录有多少条 SELECT DISTINCT id, type FROM tablename; //返回表中id与type同时不同的结果 X.1 连表子查询 sel…...

Q4营收利润增长背后估值持续偏低,全球支付巨头PayPal前景如何?

作为国际版的“支付宝”&#xff0c;全球第三方支付巨头PayPal的业务横跨欧美市场&#xff0c;覆盖了全球200多个国家和地区。同时&#xff0c;PayPal也是首家进军中国支付市场的外资机构&#xff0c;实力强劲。然而&#xff0c;近两年&#xff0c;PayPal的市值一路从3000亿跌至…...

【自然语言处理】【大模型】BLOOM:一个176B参数且可开放获取的多语言模型

BLOOM&#xff1a;一个176B参数且可开放获取的多语言模型《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》论文地址&#xff1a;https://arxiv.org/pdf/2211.05100.pdf 相关博客 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍 【自然…...

小红书穿搭博主推广费用是多少?

小红书作为一个种草属性非常强的平台&#xff0c;商业价值是有目共睹的。很多爱美的女性都会在小红书上被种草某个商品&#xff0c;所以很多服装品牌都会在小红书上布局推广。 穿搭作为小红书的顶梁柱类目&#xff0c;刷小红书就能总是看到好看的穿搭博主分享美美的衣服&#…...

网络安全-PHPstudy环境搭建

网络安全-PHPstudy环境搭建 网络搭建我是专家&#xff0c;安全我懂的不多&#xff0c;所以可能很基础。。因为我自己都不懂&#xff0c;都是跟着课程学的 PHPstudy 这个东东是一个在windwos下可以快速部署的web开发环境&#xff0c;安装了就能用&#xff0c;也支持iis和ngin…...

operator的两种用法(重载和隐式类型转换)

文章目录重载隐式类型转换构造函数的隐式类型转换补充operator算子的隐式类型转换重载 略 隐式类型转换 构造函数的隐式类型转换 利用operator进行的隐式类型转换成为operator算子的隐式类型转换&#xff0c;讲这个之前先了解构造函数的隐式类型转换&#xff0c;请看以下代…...

vue常用指令

介绍 vue是以数据驱动和组件化开发为核心的前端框架&#xff0c;可以快速搭建前端应用 常用指令 指令&#xff1a;页面数据的操作&#xff08;以数据去驱动DOM&#xff09; <div v-xxx""></div>v-if&#xff1a;做元素的插入&#xff08;append&…...

MATLAB | 有关数值矩阵、颜色图及颜色列表的技巧整理

这是一篇有关数值矩阵、颜色矩阵、颜色列表的技巧整合&#xff0c;会以随笔的形式想到哪写到哪&#xff0c;可能思绪会比较飘逸请大家见谅&#xff0c;本文大体分为以下几个部分&#xff1a; 数值矩阵用颜色显示从颜色矩阵提取颜色从颜色矩阵中提取数据颜色列表相关函数颜色测…...

C++模板元编程详细教程(之九)

前序文章请看&#xff1a; C模板元编程详细教程&#xff08;之一&#xff09; C模板元编程详细教程&#xff08;之二&#xff09; C模板元编程详细教程&#xff08;之三&#xff09; C模板元编程详细教程&#xff08;之四&#xff09; C模板元编程详细教程&#xff08;之五&…...

PhysioNet2017分类的代码实现

PhysioNet2017数据集介绍可参考文章&#xff1a;https://wendy.blog.csdn.net/article/details/128686196。本文主要介绍利用PhysioNet2017数据集对其进行分类的代码实现。 目录一、数据集预处理二、训练2.1 导入数据集并进行数据裁剪2.2 划分训练集、验证集和测试集2.3 设置训…...

正大期货本周财经大事抢先看

美国1月CPI、Fed 等央行官员谈话 美国1月超强劲的非农就业人口&#xff0c;让投资人开始上修对这波升息循环利率顶点的预测&#xff0c;也使本周二 (14 日) 的美国 1月 CPI 格外受关注。 介绍正大国际期货主账户对比国内期货的优势 ​第一点&#xff1a;权限都在主账户 例如…...

html+css综合练习一

文章目录一、小米注册页面1、要求2、案例图3、实现效果3.1、index.html3.2、style.css二、下午茶页面1、要求2、案例图3、index.html4、style.css三、法国巴黎页面1、要求2、案例图3、index.html4、style.css一、小米注册页面 1、要求 阅读下列说明、效果图&#xff0c;进行静…...

安装jdk8

目录标题一、下载地址&#xff08;一&#xff09;Linux下载&#xff08;二&#xff09;Win下载二、安装&#xff08;一&#xff09;Linux&#xff08;二&#xff09;Win三、卸载&#xff08;一&#xff09;Linux&#xff08;二&#xff09;Win一、下载地址 jdk8最新版 jdk8其他…...

二分法心得

原教程见labuladong 首先&#xff0c;我们建议左右区间全部用闭区间。那么第一个搜索区间&#xff1a;left0; rightlen-1; 进入while循环&#xff0c;结束条件是right<left。 然后求mid&#xff0c;如果nums[mid]的值比target大&#xff0c;说明target在左边&#xff0c;…...

Linux安装Docker完整教程

背景最近接手了几个项目&#xff0c;发现项目的部署基本上都是基于Docker的&#xff0c;幸亏在几年前已经熟悉的Docker的基本使用&#xff0c;没有抓瞎。这两年随着云原生的发展&#xff0c;Docker在云原生中的作用使得它也蓬勃发展起来。今天这篇文章就带大家一起实现一下在Li…...

BetterOCR:融合多引擎OCR与LLM的智能文档理解方案

1. 项目概述&#xff1a;当OCR遇上AI&#xff0c;一场关于“理解”的进化 最近在折腾一个文档自动化的项目&#xff0c;发现传统的OCR&#xff08;光学字符识别&#xff09;工具虽然能把图片里的文字“读”出来&#xff0c;但效果总差那么点意思。比如&#xff0c;一张随手拍的…...

独立开发者实战:AI编程的泥泞战壕与生存指南

1. 从“氛围编程”到真实战场&#xff1a;一个独立开发者的自白如果你最近也在关注独立开发或者AI编程工具&#xff0c;那你一定听过“氛围编程”这个词。它听起来很酷&#xff0c;对吧&#xff1f;仿佛你只需要对着AI描述一下心中的“氛围感”&#xff0c;一个完美的应用就能应…...

别再搞混了!Web地图开发必懂的EPSG:4326和EPSG:3857(附JavaScript转换代码)

Web地图开发中的坐标系解密&#xff1a;从原理到实战 第一次在Leaflet地图上叠加GPS轨迹数据时&#xff0c;我盯着那个偏离了三条街的路径百思不得其解——经纬度坐标明明正确&#xff0c;为什么显示位置完全不对&#xff1f;这个困扰无数Web开发者的经典问题&#xff0c;根源在…...

统一内存引擎:异构计算时代的内存管理革命

1. 项目概述&#xff1a;统一内存引擎的诞生背景与核心价值最近在分布式系统和数据库领域&#xff0c;一个名为chenxi-lee/unified-memory-engine的项目引起了我的注意。乍一看这个标题&#xff0c;可能会觉得它又是一个内存池或者缓存组件&#xff0c;但深入研究后你会发现&am…...

MCP Loom:快速构建AI工具与数据连接器的开发框架

1. 项目概述&#xff1a;MCP Loom&#xff0c;一个连接AI与真实世界的“织布机”如果你最近在折腾AI应用开发&#xff0c;特别是想让你的AI助手&#xff08;比如Claude、Cursor等&#xff09;能直接操作你电脑上的文件、数据库&#xff0c;甚至调用外部API&#xff0c;那么你很…...

VS Code图表神器:零配置用代码画UML、流程图与架构图

1. 项目概述&#xff1a;在VS Code里优雅地“画”图作为一名长期在技术文档、架构设计和日常笔记中与图表打交道的老兵&#xff0c;我深知一个痛点&#xff1a;从想法到一张清晰可用的图表&#xff0c;中间往往隔着“安装Java环境”、“配置GraphViz路径”、“折腾渲染引擎”等…...

VSCode + Cline + Codeium + OpenSpec + DeepSeek 完整配置指南

VSCode Cline Codeium OpenSpec DeepSeek 完整配置指南 &#x1f4cb; 最终方案概述 组件用途费用VSCode代码编辑器免费Codeium (Windsurf)Tab 补全 生成注释免费ClineAI Agent&#xff08;复杂任务、多文件操作&#xff09;免费OpenSpec规范驱动开发&#xff08;复杂功…...

开源项目可持续性挑战:从OpenOffice兴衰看企业技术选型策略

1. 开源软件的理想与现实&#xff1a;从OpenOffice的兴衰谈起几年前&#xff0c;当我听说Apache软件基金会&#xff08;ASF&#xff09;正在考虑让OpenOffice项目“退休”时&#xff0c;内心的震动是实实在在的。对于我们这些经历过世纪之交软件大战的老兵来说&#xff0c;Open…...

OpenAccess十年:EDA互操作性标准如何重塑芯片设计流程

1. 从愿景到现实&#xff1a;OpenAccess十年之路的深度复盘十年前&#xff0c;也就是2002年的12月&#xff0c;当Si2&#xff08;硅集成倡议组织&#xff09;首次向联盟成员发布OpenAccess 2.0时&#xff0c;恐怕没有多少人能预料到&#xff0c;这个源于半导体巨头内部需求的“…...

Laravel RSS聚合器larafeed:现代化内容聚合后端解决方案

1. 项目概述&#xff1a;一个为Laravel打造的现代化RSS聚合器如果你正在用Laravel构建一个内容聚合平台、新闻阅读器&#xff0c;或者只是想为自己的个人博客添加一个“我最近在读什么”的订阅墙&#xff0c;那么你很可能需要处理RSS或Atom源。手动解析这些XML格式的源、处理缓…...