MyBatis-Plus快速实现增删改[MyBatis-Plus系列]

news2025/1/15 17:38:52

师傅:徒儿,看你最近情绪波动很大呀,这是怎么了?

悟纤:还不是感情的事情来着。

师傅:怎么说来着?

悟纤:感情中间产生了太多的误会了,乱的很,老天爷给设置了太多的考题了,让我们情绪波动很大。

师傅:那针对这一份感情你是怎么想的呢 ?

悟纤:喜欢就是喜欢呗,想那么多干嘛,即使最后伤的支离破碎,也不要让自己后悔。

师傅:不错~徒儿这是认真了。

师傅:爱情要有,面包也要,学习不能落下,这样才能够给爱情加个保险。

悟纤:师傅说的是。

师傅:那咱们开始吧~ 这一小节来学习一下增三改的操作。

悟纤:师傅,那咱们开始吧。

导读

Hi,大家好,我是悟纤。我就是我,不一样的烟火。我就是我,与众不同的小苹果。

在前面的小节中,介绍了MyBatis-Plus的基本使用,需要添加什么依赖以及基本的注解配置就可以快速使用MyBatis-Plus的查询selectList。这一节来看一下常用的增删改如何操作呢 ?

👇🏻👇🏻👇🏻EasyPoi实战系列

01.《MyBatis-Plus是什么以及特性[MyBatis-Plus系列]》

02.《MyBatis-Plus快速开始 [MyBatis-Plus系列]》

本节是基于02节的代码接着往下进行讲解的。

一、插入数据

往数据库中插入一条数据,用到的方法是insert(Entity),测试代码如下:

@Testpublic void testInsert() {    User user = new User();    user.setName("悟纤");    user.setAge(18);    user.setEmail("aa@qq.com");    int rs = userMapper.insert(user);    System.out.println("成功插入条数:"+rs+"--id:"+user.getId());}

运行结果如下:

成功插入条数:1--id:1694245417048383489

说明:insert()方法的返回值是成功插入到数据库的条数,对于主键id的话,可以通过实体类中的getId()进行获取,如果命名不是id呢?这个是可以通过注解指定的,后面会讲到这方面的注解。

如果想要在控制台查看执行的SQL的话,需要在application.properties进行配置:

# mybatis-plus打印sqlmybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

这个时候在执行的话,可以在控制台看到如下的日志信息:

通过这里也可以看出这个的id,是在代码层面进行生成的,如果想要使用数据库的自增的id的话,又要怎么做呢?后续会进行讲解说明。

二、修改数据

修改数据主要两种方式:其一就是通过id的方式进行修改;其二就是通过查询条件进行修改。

通过id的方式进行修改:

@Testpublic void testUpdateById() {    User user = new User();    user.setId(1L);    user.setName("Jone.updateById");    int rs = userMapper.updateById(user);    System.out.println("修改成功的条数:"+ rs);}

运行结果:

说明:通过这里可以看出,只有设置值的字段才会进行修改。

通过查询条件进行修改,举例说明通过邮箱进行修改。

@Testpublic void testUpdateQueryCondition() {    User user = new User();    user.setName("Jone.updateQueryCondition");    UpdateWrapper<User> wrapper = new UpdateWrapper<>();    wrapper.eq("email","test1@baomidou.com");    int rs = userMapper.update(user,wrapper);    System.out.println("修改成功的条数:"+ rs);}

运行结果:

说明:参数user是要修改的对象的字段,有设置值就修改;UpdateWrapper是设置修改的条件,当然对于UpdateWrapper不仅仅能够构造条件,还能进行其它的设置,这个后面在介绍。

三、删除数据

删除数据主要两种方式:其一就是通过id的方式进行删除;其二就是通过查询条件进行删除。

通过id的方式进行删除:

@Testpublic void testDeleteById() {    int rs = userMapper.deleteById(1694245417048383489L);    System.out.println("删除成功的条数:"+ rs);}

运行结果:

通过查询条件进行删除,举例说明通过邮箱进行删除:

@Testpublic void testDeleteQueryCondition() {    UpdateWrapper<User> wrapper = new UpdateWrapper<>();    wrapper.eq("email","aa@qq.com");    int rs = userMapper.delete(wrapper);    System.out.println("删除成功的条数:"+ rs);}

运行结果:

另外还可以执行执行如下方法进行批量删除操作:

userMapper.deleteBatchIds(Collection<?> idList);

小结

通过本节的讲解,我们可以很方便的使用MyBatis-Plus进行数据的增删改操作:

(1)插入数据:insert(T entity)

(2)删除数据:deleteById(Serializable id)和delete(@Param("ew") Wrapper<T> queryWrapper)

(3)修改数据:updateById(@Param("et") T entity) 和 update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper)

(4)开启SQL打印配置:

# mybatis-plus打印sqlmybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟纤学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

ShardingJDBC分库分表:http://t.cn/A6ZarrqS

分布式事务解决方案:http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

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

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

相关文章

3.(Python数模)整数规划问题

Python解决整数规划问题 在实际生活中&#xff0c;线性规划中的变量不可能都是连续的值&#xff0c;比如不可能计算出0.5个人&#xff0c;0.5只牛羊&#xff0c;往往需要根据题目需要或者实际问题来调整决策变量的变量类型 Continuous’ 表示连续变量&#xff08;默认值&…

使用axi_quad_spi操作spi_flash

文章目录 基本测试情况IP支持的命令 基本测试情况 有spi_flash需要访问&#xff0c;为简单计&#xff0c;选择使用axi_quad_spi进行操作。开始时&#xff0c;将IP配置成如下参数&#xff0c; 这样配置&#xff0c;是想着能够适应各家的FLASH&#xff08;实际使用的则是micron…

业务安全情报第二十一期 | 打击代抢票“黄牛”

目录 疯狂的演出票 博物馆门票也疯狂 “黄牛”们的代抢票是什么&#xff1f; 代抢“黄牛”的牟利方式 “黄牛”代抢票的危害 技术上防范“黄牛”的代抢 抢票&#xff0c;成为关键词2023年暑假。博物馆的门票需要抢&#xff0c;各个演唱会的门票也需要抢&#xff0c;甚至高…

2023年03月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;拼点游戏 C和S两位同学一起玩拼点游戏。有一堆白色卡牌和一堆蓝色卡牌&#xff0c;每张卡牌上写了一个整数点数。C随机抽取n张白色卡牌&#xff0c;S随机抽取n张蓝色卡牌&#xff0c;他们进行n回合拼点&#xff0c;每次两人各出一张卡牌&#xff0c;点数大者获…

浅谈云数据安全的重要性是什么

随着企业对云计算的广泛应用&#xff0c;云数据安全成为一项关键的挑战。由于企业将数据迁移到云端&#xff0c;保护这些数据的安全变得至关重要。那么&#xff0c;云数据安全的重要性是什么?下面&#xff0c;就一起来看看具体介绍吧! 一、云数据安全的重要性 1、保护敏感数据…

组态王、触摸屏、上位机三者区别这么大?

组态王、触摸屏和上位机是工业自动化领域中常见的三个概念&#xff0c;它们在控制系统中有不同的作用和功能&#xff0c;但彼此之间也存在一定的关联。组态王&#xff08;SCADA软件&#xff09;&#xff1a;组态王是一种常用的配置软件&#xff0c;用于设计和创建人机界面&…

Ansible-playbook循环学习

循环语句简介 我们在编写playbook的时候&#xff0c;不可避免的要执行一些重复性操作&#xff0c;比如指安装软件包&#xff0c;批量创建用户&#xff0c;操作某个目录下的所有文件等。正如我们所说&#xff0c;ansible一门简单的自动化语言&#xff0c;所以流程控制、循环语句…

VMware12.1.1安装Centos7

VMware12.1.1安装Centos7 1、下载相关软件 1.1 Centos7下载 官方下载链接&#xff1a; http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso 1.2 VMware Workstation下载 VMware Workstation 12.1.1官方原版下载&#xff1a; https://dow…

Vue组件之间进行传值的两种方式

在 Vue 中&#xff0c;组件之间传值是一个常见的操作&#xff0c;通常有两种方式来传递数据&#xff1a;props 和事件&#xff08;Event Bus&#xff09;。下面我将详细介绍这两种方式。 1. 通过 Props 传递数据 Props 是一种用于从父组件向子组件传递数据的方式。在子组件中…

ROS 2官方文档(基于humble版本)学习笔记(一)

ROS 2官方文档&#xff08;基于humble版本&#xff09;学习笔记&#xff08;一&#xff09; 一、安装ROS 2二、按教程学习1.CLI 工具配置环境使用turtlesim&#xff0c;ros2和rqt安装 turtlesim启动 turtlesim使用 turtlesim安装 rqt使用 rqt重映射关闭turtlesim 由于市面上专门…

java操作adb查看apk安装包包名【搬代码】

Testpublic static void findadb() throws InterruptedException {String apkip"E:\\需求\\2023\\gql_1.0.1.apk";String findname1"cmd /c cd E:\\appium\\android-sdk\\build-tools\\27.0.2";//没有进到这里String s1 Cmd.exeCmd(findname1);System.out…

微机原理 || 第2次测试:汇编指令(加减乘除运算,XOR,PUSH,POP,寻址方式,物理地址公式,状态标志位)(测试题+手写解析)

&#xff08;一&#xff09;测试题目&#xff1a; 1.数[X]补1111,1110B&#xff0c;则其真值为 2.在I/O指令中,可用于表示端口地址的寄存器 3. MOV AX,[BXSl]的指令中&#xff0c;源操作数的物理地址应该如何计算 4.执行以下两条指令后&#xff0c;标志寄存器FLAGS的六个状态…

InVEST模型+SolVES模型教程

详情点击公众号链接&#xff1a;基于当量因子法、InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析 前言 生态系统服务是人类从自然界中获得的直接或间接惠益&#xff0c;可分为供给服务、文化服务、调节服务和支持服务4类&#xf…

基于Llama2模型的开源模型

2023年7月18日Meta开源了Llama2&#xff0c;在2万亿个Token上训练&#xff0c;可用于商业和研究&#xff0c;包括从7B到70B模型权重、预训练和微调的代码。相比Llama1&#xff0c;Llama2有较多提升&#xff0c;评估结果如下所示&#xff1a; 基于Llama2模型的开源模型如下所示…

两节点vSAN配置实战

新钛云服已累计为您分享762篇技术干货 vSAN是VMware的软件定义存储&#xff08;SDS&#xff09;产品&#xff0c;在使用VMware虚拟化的场景中得到广泛的使用。标准的vSAN为三个节点&#xff0c;VMware也推出了用于分支机构的两节点vSAN方案&#xff08;ROBO&#xff09;&#x…

计算机毕设之基于Python+django+MySQL可视化的学习系统的设计与实现

系统阐述的是使用可视化的学习系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体架构。利…

保姆级 Keras 实现 Faster R-CNN 十一

保姆级 Keras 实现 Faster R-CNN 十一 一 RoI 区域二. 定义 RoiPoolingLyaer1. call 函数2. compute_output_shape 函数 三. 将 RoiPoolingLayer 加入模型 上一篇 文章中我们实现了 ProposalLyaer 层, 它将的功能是输出建议区域矩形. 本文要实现另一个自定义层 RoiPoolingLayer…

光栅化(Rasterization)

MVP复习 1&#xff09;Model transformation(placing objects) 找好一个场景&#xff0c;让人物摆好姿势 2&#xff09;View transformation(placing camera) 放置好照相机 利用camera和物体的相对运动关系&#xff0c;始终让camera从任一位置变换到原点看向-z方向且向上为…

LeetCode(力扣)669. 修剪二叉搜索树Python

LeetCode669. 修剪二叉搜索树 题目链接代码 题目链接 https://leetcode.cn/problems/trim-a-binary-search-tree/ 代码 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # …

VS + QT 封装带UI界面的DLL

一、创建编译DLL的项目 1.新建Qt Class Liabrary 2.新建项目&#xff0c;选择Qt Widgets Class 3.新建C类&#xff0c;可以在此类里面写算法函数用于调用。 4.下面是添加完Qt窗体类和C类之后的项目截图 5.修改头文件并编译 将uidemo_global.h中的ifdef内容复制到dialog.h上…