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

MyBatis-Plus 多数据源配置指南

代码生成器配置

1. 引入依赖

首先需要在项目中添加 MyBatis-Plus 代码生成器和 FreeMarker 模板引擎的依赖:

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency>

2. 快速生成代码

使用 MyBatis-Plus 的代码生成器可以快速生成实体类、Mapper、Service 和 Controller 等代码,极大提高开发效率。

多数据源配置

应用场景

MyBatis-Plus 支持多种多数据源场景:

  • 纯粹多库

  • 读写分离

  • 一主多从

  • 混合模式

示例场景:纯粹多库

我们创建两个数据库:

  1. mybatis_plus(已有库,保持不变)

  2. mybatis_plus_1(新建库)

将 product表从 mybatis_plus移动到 mybatis_plus_1,实现每个库一张表。

1. 创建数据库及表

-- 创建新数据库 CREATE DATABASE `mybatis_plus_1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; -- 使用新数据库 USE `mybatis_plus_1`; -- 创建商品表 CREATE TABLE product ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '商品名称', price INT(11) DEFAULT 0 COMMENT '价格', version INT(11) DEFAULT 0 COMMENT '乐观锁版本号', PRIMARY KEY (id) ); -- 添加测试数据 INSERT INTO product (id, NAME, price) VALUES (1, '外星人笔记本', 100); -- 在原库中删除product表(如果存在) DROP TABLE IF EXISTS `mybatis_plus`.`product`;

2. 引入多数据源依赖

<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.5.0</version> </dependency>

3. 配置多数据源

修改 application.yml配置文件:

spring: datasource: dynamic: # 设置默认的数据源,默认值为master primary: master # 严格匹配数据源,默认false。true表示未匹配到指定数据源时抛异常,false表示使用默认数据源 strict: false datasource: master: url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 123456 slave_1: url: jdbc:mysql://localhost:3306/mybatis_plus_1?characterEncoding=utf-8&useSSL=false driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 123456

4. 创建用户Service

@DS("master") // 指定操作的数据源 @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { }

5. 创建商品Service

@DS("slave_1") // 指定操作的数据源 @Service public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService { }

6. 测试多数据源

@Autowired private UserService userService; @Autowired private ProductService productService; @Test public void testDynamicDataSource() { System.out.println(userService.getById(1L)); // 从master数据源查询 System.out.println(productService.getById(1L)); // 从slave_1数据源查询 }

测试结果

如果测试用例能够成功从两个不同的数据库获取数据,则多数据源配置成功。

读写分离实现思路

通过多数据源配置,我们可以轻松实现读写分离:

  1. 将写操作方法(如insert、update、delete)加上主库数据源注解 @DS("master")

  2. 将读操作方法(如select)加上从库数据源注解 @DS("slave")

  3. 通过AOP或手动指定方式实现数据源的自动切换

这种配置方式灵活且易于扩展,可以适应各种复杂的多数据源场景。

http://www.dtcms.com/a/301828.html

相关文章:

  • Android Framework知识点
  • 单链表的冒泡排序实现:从原理到代码详解
  • Linux指令(2):
  • 《频率之光》
  • 【测试报告】​​云枢馈赠系统(Java+Selenium+Jmeter自动化测试)
  • WebStack-Hugo | 一个静态响应式导航主题
  • 回归预测 | MATLAB实现BiTCN双向时间卷积神经网络多输入单输出回归预测
  • 船舶模型预测控制路径跟踪仿真研究
  • JAVA进阶--MySQL
  • 学习游戏制作记录(改进投掷剑的行为)7.27
  • 分类预测 | MATLAB基于四种先进的优化策略改进蜣螂优化算法(IDBO)的SVM多分类预测
  • 内网后渗透攻击过程(实验环境)--4、权限维持(3)
  • 下载 | Win11 官方精简版,系统占用空间极少!(7月更新、Win 11 IoT物联网 LTSC版、适合老电脑安装使用)
  • 墨者:SQL手工注入漏洞测试(MySQL数据库)
  • 罗盘数据门户:挖掘数据价值,让数据助力更多可能
  • 洛谷 P10446 64位整数乘法-普及-
  • RTOS 基础知识
  • 打开postman后一直空白
  • mcu hardfault
  • Process Monitor学习
  • keil debug失败问题
  • 【二分查找 树状树状】P9588 「MXOI Round 2」队列|普及+
  • 7月27日打卡
  • 【0基础PS】PS工具详解--选择工具--快速选择工具
  • web刷题
  • 卸载某个软件的方法
  • ABB机器人多任务详解
  • J2EE模式---服务层模式
  • Min-Max标准化​ 和 ​Z-score标准化
  • MySQL - 索引(B+树)