【学习笔记】【SpringCloud】MybatisPlus 基础使用

news/2025/2/24 18:17:34/

目录

一、使用 MybatisPlus 基本步骤

1. 引入 MybatisPlus 依赖

2. 定义Mapper接口并继承BaseMapper

二、MybatisPlus 常用配置

三、自定义SQL

四、IService 接口

1. 批量新增的效率问题

2. 配置方式

五、插件功能

1. 分页插件


一、使用 MybatisPlus 基本步骤

1. 引入 MybatisPlus 依赖

<!--MybatisPlus-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>

2. 定义Mapper接口并继承BaseMapper

public interface UserMapper extends BaseMapper<User> {
}

二、MybatisPlus 常用配置

MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置。例如:

mybatis-plus:type-aliases-package: com.itheima.mp.domain.po # 别名扫描包mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,默认值configuration:map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射cache-enabled: false # 是否开启二级缓存,默认为falseglobal-config:db-config:id-type: assign_id # id为雪花算法生成,默认值update-strategy: not_null # 更新策略:只更新非空字段

三、自定义SQL

我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分。

四、IService 接口

1. 批量新增的效率问题

在使用 MybatisPlus 批处理方法进行新增、更新、删除操作时。Mysql 驱动可能默认不会优化这些批量语句。也就是说,即使调用了批处理方法,驱动可能还是会将每个SQL单独发送到数据库执行,这样效率不高。比如,插入100条数据,可能需要发送100次插入语句,网络开销大。

可以考虑开启 rewriteBatchedStatements 参数,开启此参数后,JDBC 驱动会将多个独立的 SQL 语句合并为单个高效语句。例如,批量插入 INSERT INTO table (col) VALUES (?) 会被重写为 INSERT INTO table (col) VALUES (?), (?), ...,显著减少网络传输和数据库解析开销。

2. 配置方式

在 JDBC 连接 URL 中添加参数:

jdbc:mysql://localhost:3306/db?rewriteBatchedStatements=true

在mysql 的官方文档中,rewriteBatchedStatements 的默认值是 false

五、插件功能

1. 分页插件

如果使用 MybatisPlus 自带的分页插件,就不用使用其他插件了,比如PageHelper

首先,要在配置类中注册MyBatisPlus的核心插件,同时添加分页插件:

@Configuration
public class MybatisConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {// 1.初始化核心插件MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 2.添加分页插件PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);pageInterceptor.setMaxLimit(1000L); // 设置分页上限interceptor.addInnerInterceptor(pageInterceptor);return interceptor;}
}


http://www.ppmy.cn/news/1574680.html

相关文章

OSPF基础知识总结

基本概念 协议类型:链路状态型IGP(内部网关协议),基于Dijkstra算法计算最短路径树。 协议号:IP层协议,协议号89。 特点:支持分层设计(区域划分)、快速收敛、无环路、支持VLSM/CIDR。 区域(Area) 骨干区域(Backbone Area):Area 0,所有非骨干区域必须直接或通过虚…

第四届图像、信号处理与模式识别国际学术会议(ISPP 2025)

重要信息 大会官网&#xff1a;www.icispp.com 大会时间&#xff1a;2025年3月28日-30日 大会地点&#xff1a;南京 简介 由河海大学和江苏大学联合主办的第四届图像、信号处理与模式识别&#xff08;ISPP 2025) 将于2025年3月28日-30日在中国南京举行。主要围绕图像信号处…

C#项目04——递归求和

实现逻辑 利用递归&#xff0c;求取1~N以内的和 知识点 正常情况下&#xff0c;C#每条线程都会分配1MB的地址空间&#xff0c;因此执行递归的层次不能太深&#xff0c;否则就会出现溢出的风险&#xff0c; 业务设计 程序代码 private void button1_Click(object sender, E…

Mac OS JAVA_HOME设置

个人博客地址&#xff1a;Mac OS JAVA_HOME设置 | 一张假钞的真实世界 在MacOS上使用DMG文件安装了Jdk8 之后&#xff0c;在默认路径下找不到JDK的HOME路径&#xff1a; $ which java /usr/bin/java $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 12 6 2015 /usr/b…

力扣hot100 ——搜索二维矩阵 || m+n复杂度优化解法

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 解题思路&#xff1a; 借助行和列有序特性&#xff0c;不断按行或者列缩小范围&#xff1b;途中数字表示每…

Prompt-to-Prompt 进行图像编辑

Prompt-to-Prompt 图像编辑是一种基于注意力机制的图像编辑技术&#xff0c;它通过在输入图像和编辑目标之间建立一个双向注意力机制来实现图像编辑。这种技术可以让模型根据输入图像的内容和编辑目标的描述来进行图像编辑。 交叉注意力控制是 Prompt-to-Prompt 图像编辑中的一…

深入探讨 Rust 中的 Deref Trait:让智能指针像常规引用一样工作

1. 引用与解引用操作简介 首先&#xff0c;我们来看一下普通引用是如何使用解引用操作的。考虑下面这个简单例子&#xff1a; fn main() {let x 5;let y &x;assert_eq!(5, x);// 使用 * 运算符来解引用 y&#xff0c;从而获取它指向的值assert_eq!(5, *y); }在这个例子…

通过Hive小文件合并(CombineHiveInputFormat)减少80%的Map任务数

一、Hive小文件合并&#xff08;CombineHiveInputFormat&#xff09;减少Map任务数 核心问题&#xff1a;小文件过多导致Map任务激增&#xff08;每个文件至少一个Map&#xff09;&#xff0c;浪费资源且增加NameNode压力 优化策略&#xff1a; 输入合并&#xff08;Map前合并…