MybatisPlus-插件篇

文章目录

  • 一、前言
  • 二、插件
    • 1、分页插件
      • 2.1.1、引入依赖
      • 2.1.1、配置分页插件
      • 2.1.3、使用分页方法
    • 2、乐观锁插件
      • 2.1、引入依赖
      • 2.2、添加版本字段
      • 2.3、配置乐观锁插件
      • 2.4、执行更新操作
  • 三、总结

一、前言

本文将详细介绍mybatisplus中常用插件的使用。

二、插件

1、分页插件

分页查询在实际应用中非常常见,它允许我们从数据库中检索大量数据时,将结果分成若干页显示,以提高用户体验并减轻数据库负担。Mybatis-Plus的分页插件就是为了解决这个问题而设计的,它能够让我们以更简单的方式进行分页查询。
官方对Page类的说明:
在这里插入图片描述

以下是Mybatis-Plus分页插件的详细介绍:

2.1.1、引入依赖

  1. 引入依赖: 首先,你需要在项目中引入Mybatis-Plus的相关依赖,包括核心依赖以及分页插件的依赖。
<!-- Mybatis-Plus 依赖 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本</version>
</dependency>

2.1.1、配置分页插件

  1. 配置分页插件: 在Mybatis-Plus的配置文件中,需要配置分页插件。一般来说,你需要创建一个PaginationInterceptor的实例,并将其添加到Mybatis的插件列表中。这个插件会在执行数据库查询时自动处理分页逻辑。
mybatis-plus:configuration:# 配置数据库字段下划线转驼峰命名规则map-underscore-to-camel-case: true# 分页插件配置plugin:pagination:dialect: mysql # 指定数据库方言,支持的数据库有很多,这里以 MySQL 为例

2.1.3、使用分页方法

  1. 使用分页方法: Mybatis-Plus提供了一些内置的分页方法,可以直接在Mapper接口中使用。这些方法包括:

    • selectPage(Page<T> page, Wrapper<T> queryWrapper): 根据查询条件进行分页查询,并将结果封装到Page对象中。
    • selectMapsPage(Page<T> page, Wrapper<T> queryWrapper): 类似于上述方法,但返回的是一个分页的Map列表,每个Map代表一行记录。
  2. 分页参数: 分页查询需要指定当前页数和每页显示的记录数。Mybatis-Plus的分页方法中,通常会传入一个Page对象,你可以在该对象中设置这些参数。

  3. 分页结果: 分页查询的结果会被封装到Page对象中,该对象除了包含查询结果的列表外,还包含了分页相关的元数据,如总记录数、总页数、当前页码等。

总体而言,Mybatis-Plus的分页插件使得分页查询变得更加方便和简单。你不再需要手动编写分页查询的SQL语句,只需要调用相应的分页方法,传入分页参数和查询条件即可。

以下是一个使用Mybatis-Plus分页插件的简单示例:

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;public class UserService {@Autowiredprivate UserMapper userMapper;public Page<User> getUserListByPage(int pageNum, int pageSize) {Page<User> page = new Page<>(pageNum, pageSize);QueryWrapper<User> queryWrapper = new QueryWrapper<>();// 设置查询条件...return userMapper.selectPage(page, queryWrapper);}
}

在这个示例中,UserMapper是一个继承了Mybatis-Plus的BaseMapper接口的接口,它继承了一些基本的查询方法,包括分页方法。

需要注意的是,Mybatis-Plus的版本可能会有更新,因此具体的用法可能会有所变化。建议查阅官方文档或者示例代码以获取最新的用法信息。

2、乐观锁插件

乐观锁是一种用于处理数据库并发访问的策略,它不会锁住整个数据行,而是在更新时检查数据版本,如果版本号匹配,则允许更新操作;如果版本号不匹配,则说明数据已经被其他事务修改,更新操作将被拒绝。

2.1、引入依赖

  1. 引入依赖: 在项目的 pom.xml 文件中,添加 Mybatis-Plus 的依赖(如果尚未添加)。
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本</version>
</dependency>

2.2、添加版本字段

  1. 实体类添加版本字段: 在需要应用乐观锁的实体类中,添加一个版本号字段,并使用 @Version 注解标记。
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableName;@TableName("user")
public class User {private Long id;private String name;// 其他字段...@Versionprivate Integer version; // 乐观锁版本号字段// getter 和 setter 方法...
}

2.3、配置乐观锁插件

  1. 配置乐观锁插件: 在 Spring Boot 的配置文件中,添加乐观锁插件的配置。

application.yml 文件中:

mybatis-plus:configuration:# 配置数据库字段下划线转驼峰命名规则map-underscore-to-camel-case: trueglobal-config:db-config:# 配置乐观锁插件logic-not-delete-value: 0 # 逻辑未删除值logic-delete-value: 1     # 逻辑已删除值

2.4、执行更新操作

  1. 执行更新操作: 在需要进行更新操作的地方,调用 Mybatis-Plus 提供的更新方法即可。
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public boolean updateUser(User user) {UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.eq("id", user.getId());// 设置其他更新条件...return userMapper.update(user, updateWrapper) > 0;}
}

在这个例子中,当执行更新操作时,Mybatis-Plus 会自动根据实体对象的版本号字段进行版本检查。如果版本号匹配,则更新数据并将版本号加一;如果版本号不匹配,更新操作将失败。

乐观锁插件使得并发更新操作更加安全,避免了数据的覆盖和错误。通过添加版本号字段以及乐观锁插件的配置,你可以轻松地在 Spring Boot 项目中应用乐观锁。

三、总结

Mybatis-Plus 插件提供了很多便捷的方法和功能,能够大幅简化 MyBatis 的开发,减少重复劳动。通过配置依赖、实体类、Mapper 接口以及相应的插件,可以在 Spring Boot 项目中高效地进行数据库操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/60591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Texlive2023与Texstudio2023卸载与安装(详细全程)

早在两年前安装了texlive2020&#xff0c;最近重新使用总是报错&#xff0c;好像是因为版本过低。我就找了个时间更新一下texlive版本&#xff0c;全程如下。 1、卸载texlive老版本 1&#xff09;找到texlive目录&#xff0c;比如我的是D:\texlive\2022\tlpkg\installer&…

链路聚合原理

文章目录 一、定义二、功能三、负载分担四、分类五、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、定义 在网络中&#xff0c;端口聚合是一种将连接到同一台交换机的多个物理端口捆绑在一起&#xff0c;形成一个逻辑端口的技术。通过端口聚合&…

Llama模型结构解析(源码阅读)

目录 1. LlamaModel整体结构流程图2. LlamaRMSNorm3. LlamaMLP4. LlamaRotaryEmbedding 参考资料&#xff1a; https://zhuanlan.zhihu.com/p/636784644 https://spaces.ac.cn/archives/8265 ——《Transformer升级之路&#xff1a;2、博采众长的旋转式位置编码》 前言&#x…

Uniapp笔记(五)uniapp语法4

本章目标 授权登录【难点、重点】 条件编译【理解】 小程序分包【理解】 一、授权登录 我的模块其实是两个组件&#xff0c;一个是登录组件&#xff0c;一个是用户信息组件&#xff0c;根据用户的登录状态判断是否要显示那个组件 1、登录的基本布局 <template><…

【java】【已解决】IDEA启动报错:Lombok Requires Annotation Processing

解决办法&#xff1a; 1、根据异常提示操作&#xff1a; 直接点击错误提示后面的蓝色标识【Enable】&#xff08;小编点完了所以变灰色&#xff09;&#xff0c;此操作等价于下面的步骤&#xff1a; 【File】-->【Settings】-->【Build】-->【Compiler】-->【Ann…

【数学建模】-- 模糊综合评价

模糊综合评价&#xff08;Fuzzy Comprehensive Evaluation&#xff09;是一种用于处理不确定性和模糊性信息的决策分析方法。它通常用于解决复杂的多指标决策问题&#xff0c;其中各指标之间可能存在交叉影响和模糊性的情况。模糊综合评价通过将不确定性和模糊性量化&#xff0…

MongoDB实验——MongoDB配置用户的访问控制

MongoDB 配置用户的访问控制 一、 实验原理 理解admin数据库&#xff1a;安装MongoDB时&#xff0c;会自动创建admin数据库&#xff0c;这是一个特殊数据库&#xff0c;提供了普通数据库没有的功能&#xff0c;例如&#xff0c;有些账户角色赋予用户操作多个数据库的权限&…

地下管线三维自动建模软件MagicPipe3D V3.0发布

2023年9月1日经纬管网建模系统MagicPipe3D V3.0正式发布&#xff0c;该版本经过众多用户应用和反馈&#xff0c;在三维地下管网建模效果、效率、适配性方面均有显著提升&#xff01;MagicPipe3D本地离线参数化构建地下管网模型&#xff08;包括管道、接头、附属设施等&#xff…

0基础学习VR全景平台篇 第94篇:智慧景区浏览界面介绍

一、景区详细信息介绍 点击左上角的图标就可以看到景区详细信息例如景区简介&#xff0c;地址&#xff0c;开放信息&#xff0c;联系电话等 二、问题反馈中心 点击左下角的【问题反馈】按钮向作者进行问题反馈 三、开场地图 1、直接点击开场地图页面上的图标浏览该场景 2、通…

idea新建Java-maven项目时,出现Dependency ‘ xxx(jar包名)‘ not found的解决方案

项目场景&#xff1a; 项目场景&#xff1a;使用idea创建maven项目时&#xff0c;导入简单依赖时&#xff08;本文以mysql-connector-java为例&#xff09;。 问题描述 问题&#xff1a; 首先&#xff0c;在创建新的maven项目中&#xff0c;出现下列两种情况&#xff1a; &am…

hp惠普光影精灵5笔记本HP Pavilion Gaming-15-dk0135tx原装出厂Win10系统

原厂系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 适用型号&#xff1a; 15-dk0011tx,15-dk0018tx,15-dk0019tx,15-dk0020tx,15-dk0021tx,15-dk0038tx 15-dk0039tx,15-dk0040tx,15-dk0041tx,15-dk0125tx,15-dk0126tx,15-dk0127tx 15-dk012…

1.2 BEV感知算法数据形式

本文来自自动驾驶之心知识星球的国内首个BEV感知全栈系列学习教程 Birds-eye-view (BEV) Perception: A Survey and Collection 什么是图像 1. 图像是由相机生成的&#xff0c;是将三维世界 中的坐标点&#xff08;单位为米&#xff09;映射到二维 图像平面&#xff08;单位像…

图像翻拍检测——反射分量分离的特征融合

随着计算机技术的迅速发展&#xff0c;需要建立人与信息一一对应的安保认证技术&#xff0c;通过建立完整的映射网络体系&#xff0c;从而确保每个人的人身、财产、隐私等的安全.与指纹、基因等人体生物特征识别系统相比&#xff0c;人脸识别系统更加友好&#xff0c;不需要人的…

2023有哪些更好用的网页制作工具

过去&#xff0c;专业人员使用HTMLL、CSS、Javascript等代码手动编写和构建网站。现在有越来越多的智能网页制作工具来帮助任何人实现零代码基础&#xff0c;随意建立和设计网站。在本文中&#xff0c;我们将向您介绍2023年流行的网页制作工具。我相信一旦选择了正确的网页制作…

【Terraform学习】使用 Terraform创建 S3 存储桶事件(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…

Stable Diffusion 文生图技术原理

图像生成模型简介 图片生成领域来说&#xff0c;有四大主流生成模型&#xff1a;生成对抗模型&#xff08;GAN&#xff09;、变分自动编码器&#xff08;VAE&#xff09;、流模型&#xff08;Flow based Model&#xff09;、扩散模型&#xff08;Diffusion Model&#xff09;。…

SpringBoot与前端交互遇到的一些问题

一、XXX.jar中没有主清单属性 场景&#xff1a; SpringBoot打的jar包在Linux运行报错 解决方案&#xff1a; 百度找了很多都是一样的答案&#xff0c;但是解决不了我的问题&#xff0c;于是我新建了一个springboot项目发现打的jar包可以在Linux上运行。检查了下只要把下面这2个…

el-date-picker限制选择的时间范围

<el-date-pickersize"mini"v-model"dateTime"value-format"yyyy-MM-dd HH:mm:ss"type"datetimerange"range-separator"~"start-placeholder"开始日期"end-placeholder"结束日期":picker-options&quo…

非科班菜鸡算法学习记录 | 代码随想录算法训练营第51天||309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 股票总结

309.最佳买卖股票时机含冷冻期 309. Best Time to Buy and Sell Stock with Cooldown(英文力扣连接) 知识点&#xff1a;动规 状态&#xff1a;看思路ok 思路&#xff1a; 四个状态需要想&#xff0c;持有/不持有且过了冷却期/当天卖/正处于冷却期&#xff1b; 具体看注释…