MyBatis-Plus删除操作知识点总结

news2024/11/29 8:38:26

系列文章目录

Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客  

Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客
MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客

MyBatis-Plus中的更新操作(通过id更新和条件更新)_心态还需努力呀的博客-CSDN博客


目录

系列文章目录

前言

一、根据id删除

二、Map多条件删除

三、QueryWrapper多条件删除

四、id数组删除多条数据

总结


前言

本次内容主要是MP中的删除操作的知识点,有通过id删除,通过条件删除(map删出,QueryWrapper删除)、批量删除。主要是MP中的删除函数的用法。虽说在以后的开发中一般不会轻易地删除数据,只是把数据进行标记后不显示到页面。但删除操作在我们的学习中还是要求掌握的,毕竟也不难,而且在我们的开发中也会去运用到。所以作为学习的我们还是很有必要掌握该知识点的~


一、根据id删除

先看deleteById方法的源码,需要传入一个参数id值,返回的是一个int,也就是删除条数。

int deleteById(Serializable id);

 直接调用deleteById方法,这里传入参数为6,表示要删除id为6的信息。根据返回的参数,>0则删除成功,打印数据查看是否还有id为6的信息。反之则删除失败。写测试案例,代码去下:

//根据id删除
    //int deleteById(Serializable id);
    @Test
    public void testDeleteById() {
        int result = this.userMapper.deleteById(6);
        if(result>0){
            testSelectList();
            System.out.println("删除成功!");
        }else {
            System.out.println("删除失败!");
        }
    }

 查看运行结果:根据生成的sql代码可看出,传入的id作为删除条件。 并且执行成功删除1条数据。

二、Map多条件删除

查看源代码,需要定义一个map,键为表字段名,值为条件的值。返回值也是受影响的行数。

int deleteByMap(@Param("cm") Map<String, Object> columnMap);

下面我们写测试案例,首先要new一个hashmap,将要删除的条件放到map中(这里我们删除名字为赵六、邮箱为zhaoliu@itcast.cn的信息),然后执行该方法查看是否删除成功。 

@Test
    public void testDeleteByMap() {
        //删除条件的封装map
        Map<String,Object> map=new HashMap<>();
        map.put("user_name","赵六");
        map.put("user_email","zhaoliu@itcast.cn");
        //执行删除
        int result = this.userMapper.deleteByMap(map);
        if(result>0){
            testSelectList();
            System.out.println("删除成功!");
        }else {
            System.out.println("删除失败!");
        }
    }

结果如下图所示:通过生成的sql代码可看出删除多条件中是以and进行的连接

三、QueryWrapper多条件删除

 查看源码,是delete方法,里面的条件要通过QueryWrapper进行封装返回值也是受影响的行数。

int delete(@Param("ew") Wrapper<T> queryWrapper);

 使用QueryWrapper我们以前更新操作时讲解过,这里就直接用了哦~

首先可以在querWrapper里面设置删除的条件,但是需要知道表的字段名才可以设置。也就是下面代码的方法一。所以一般我们用方法二,也就是先new一个User对象,设置条件值即可。然后将user作为参数传给querWrapper。即可进行条件删除。

这里我们删除用户名为哈哈、邮箱为12433的用户信息。

//根据QueryWrapper多条件删除 ,条件之间是and关系
    //int delete(@Param("ew") Wrapper<T> queryWrapper);
    @Test
    public void testDelete() {
        //方法一:
//        QueryWrapper<User> wrapper=new QueryWrapper<>();
//        wrapper.eq("user_name","哈哈")
//                .eq("user_email","12433");
        //方法二:
        User user=new User();
        user.setUserName("哈哈");
        user.setUserEmail("12433");
        //在new时将user设置进去
        QueryWrapper<User> wrapper=new QueryWrapper<>(user);
        //执行删除
        int result = this.userMapper.delete(wrapper);
        if(result>0){
            testSelectList();
            System.out.println("删除成功!");
        }else {
            System.out.println("删除失败!");
        }
    }

 查看执行效果:

从下图也可看出多条件之间都是以AND进行的连接。删除成功~ 

四、id数组删除多条数据

 查看源码,该方法为deleteBatchIds(),需要传入一个id的集合,返回值也是受影响行数。

int deleteBatchIds(@Param("coll") Collection<?> idList);

编写测试方法testDeleteBatchIds(),在集合中传入1,2。表名要删除id为1,id为2的用户信息。做到批量删除的效果。

//根据id的数组删除多条数据
    //int deleteBatchIds(@Param("coll") Collection<?> idList);
    @Test
    public void testDeleteBatchIds(){
        //批量删除
        int result = userMapper.deleteBatchIds(Arrays.asList(1, 2));
        System.out.println("result=>"+result);

    }

 查看执行效果图:

查看生成的sql代码,使用的是in关键字,查看表中user_id里有1,2的都删除。

所以执行的行数为2。


 

总结

Mybatis-Plus中的删除操作知识点到这里就结束了,这些功能最常用的还是条件查询,会条件删除的话其他方法都可实现。所以说QueryWrapper必须要会用,而且它不管是修改操作、删除操作、查询操作都会用到。其他的方法大家多去掌握~不过别在开发过程中频繁地使用删除操作,数据都是要保留的,我们练习的话自己建个表可以多加试试,重在掌握知识点嘛~

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

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

相关文章

移动无线点餐客户端的研究与实现(Java+Android)

目录 1 绪 论 2 1.1 研究的背景及意义 2 1.2 本文主要内容 2 2.1 系统架构 3 2.2 关键技术 3 2.2.1 JDBC 3 2.2.2 Jquery 4 2.2.3 Ajax 4 2.3 开发环境及平台 5 2.3.1 Eclipse 5 2.3.2 MyEclipse 6 2.3.3 Tomcat服务器 6 2.3.4 应用平台Android 7 3 订餐系统分析与设计 9 3.1需…

机器学习:图文详解密度聚类DBSCAN算法(附Python实现)

目录0 写在前面1 密度聚类2 DBSCAN算法3 Python实现3.1 算法复现3.2 可视化实验0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&#xff1b;“广”在分析多个机器学习模型&#xff1a;决策树…

C#线程间操作无效:从不是创建控件“textbox1”的线程访问它

在C#的多线程访问中&#xff0c;在线程间的相互访问时因为线程安全问题有访问限制&#xff0c;在创建一般线程时&#xff0c;对于界面元素访问时这样的问题比较常见。 比如&#xff0c;创建一个form1&#xff0c;上面放置一个textbox控件&#xff0c;创建一个线程去访问textbox…

3_SpringMVC_执行流程

1DispatcherServlet&#xff1a;前端控制器 用户请求到达前端控制器&#xff0c;它就相当于 mvc 模式中的 c&#xff0c;dispatcherServlet 是整个流程控制的中心&#xff0c;由 它调用其它组件处理用户的请求&#xff0c;dispatcherServlet 的存在降低了组件之间的耦合性。 2…

【学习笔记43】JavaScript的事件

JavaScript的事件一、JS的事件1、事件的三要素2、DOM 0级事件绑定3、DOM 2级事件绑定(事件监听)二、浏览器事件三、鼠标事件1. 左键单击&#xff1a;click2. 双击事件&#xff1a;dblclick3.右键事件&#xff1a;contextmenu4. 鼠标按下事件&#xff1a;mousedown5. 鼠标抬起事…

编写Servlet代码获取页面body中json数据

目录 1、在 maven 项目中引入 jackson 2、编写代码 ① 介绍 jackson 提供操作 json 数据的类和方法 ② 确定 json 数据格式&#xff0c;并写出对应的类 ③ 编写servlet代码 3、使用 postman 发送数据观察结果 4、拓展 readValue 方法返回构造对象的过程 本文使用maven项目&…

HTML5详解

文章目录1 网页基本标签1.2 标题标签1.3 段落标签1.4 换行标签1.5 水平线标签1.6 字体样式标签1.7 注释和特殊符号2 图像、超链接、网页布局2.1 图像2.2 超链接标签2.3 块元素和行内元素2.4 网页布局3 列表、表格、媒体元素、iframe内联框架3.1 列表3.2 表格3.3 媒体元素3.4 if…

Unity 之 安卓堆栈跟踪和日志工具 (Android Logcat | 符号表解析Bugly捕获)

Unity 之 日志解析工具 Android Logcat一&#xff0c;工具集成1.1 注意事项1.2 导入插件二&#xff0c;连接设备2.1 使用USB连接2.2 无线连接三&#xff0c;实用功能介绍3.1 通用介绍3.2 堆栈跟踪工具 -- 解析Bugly捕获报错一&#xff0c;工具集成 Logcat是开发者必备的工具&a…

ps,查看Linux系统进程信息小帮手-尚文网络xUP楠哥

~~全文共852字&#xff0c;阅读需约5分钟。 进Q群11372462&#xff0c;领取专属报名福利&#xff0c;包含云计算学习路线图代表性实战训练大厂云计算面试题资料! ps命令在Linux系统中非常的常用&#xff0c;主要是帮助我们查看系统进程的详细信息&#xff0c;其中&#xff0c;…

Jetson Nano如何安装 onnxruntime gpu Python包

Jetson Nano 可以直接 pip 安装 cpu 版本的 onnxruntime 用 pypi 的源&#xff0c;直接安装 onnxruntime-gpu 或者 onnxruntime_gpu 都会报找不到对应的架构 aarch64 本来以为要用官方库编译一下 https://github.com/microsoft/onnxruntime 幸运的是&#xff0c;NVIDIA官方帮…

地级市市场化指数+樊纲市场化指数(包含分省、市两份数据)

一、地级市市场化指数 1、数据来源&#xff1a;各省份年鉴以及地级市统计公报 2、时间跨度&#xff1a;1998-2020年 3、区域范围&#xff1a;422&#xff08;城市和区&#xff09; 4、指标说明&#xff1a; 依据樊纲市场化各指标&#xff0c;结合各地级市的相关数据算出来…

Typecho中handsome主题如何增加侧边导航栏

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

【心电信号】小波阙值心电信号去噪【含Matlab源码 2188期】

⛄一、小波阈值法去噪概述 电能质量扰动信号的噪声大多以高斯白噪声的形式存在&#xff0c;利用小波变换对信号进行多分辨率分解&#xff0c;由于小波变换具有去除数据相关性的特点&#xff0c;故可以将有用信号与噪声的能量分离开来。信号中有效的信息主要集中在较大的小波系…

【Vue】Vuex-store

Vuex是什么&#xff1f; Vuex是实现组件全局状态(数据&#xff09;管理的一种机制&#xff0c;可以方便的实现组件之间数据的共享。 像一个仓库一样&#xff01; 使用Vuex统一管理状态的好处&#xff1f; 1.能够在vuex中集中管理共享的数据&#xff0c;易于开发和后期维护 2.能…

二叉查找树(1)-二叉树-数据结构和算法(Java)

文章目录1 前言1.1 二叉查找树定义1.2 二叉查找树的性质2 基本实现2.1 API2.2 实现代码2.2.1 数据表示2.2.2 查找2.2.3 插入3 分析4 有序性相关方法与删除操作4.1 最大键和最小键4.2 向上取整和向下取整4.2.1 向下取整floor()4.2.2 向上取整ceiling()4.3 选择select()4.4 排名r…

微服务框架 SpringCloud微服务架构 3 Eureka 3.1 提供者与消费者

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构3 Eureka3.1 提供者与消费者3.1.1 一些概念3.1.2 一个问题3.1.3 总结3 Eur…

【Hack The Box】linux练习-- Pit

HTB 学习笔记 【Hack The Box】linux练习-- Pit &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f36d;…

单片机如何控制外设?

单片机如何控制外设&#xff1f; 单片机不是直接控制外设的&#xff0c;而是通过配置片上外设寄存器来控制其输出和检测高低电平&#xff0c;进而控制外围器件。 单片机如何配置寄存器的&#xff1f; 下图是单片机驱动 点亮发光二极管 内核从flash里面加载读取指令。内核根据指…

将DataFrame中符合指定条件的数据替换为指定的值:mask()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将DataFrame中符合指定条件的数据 替换为指定的值&#xff1a;mask()函数 选择题 下列说法错误的是? import pandas as pd myDF pd.DataFrame({"A":[1,2,3], "B":[4,…

java EE初阶 — 如何进行多线程编程

文章目录1.java如何进行多线程编程1.1 最基础的多线程代码1.2 线程的优势2.java中创建线程的方法2.1 继承Thread 重写run2.2 实现Runnable 接口2.3 使用匿名的内部类&#xff0c;继承 Thread2.4 使用匿名类。继承 Runnable2.5 使用 Lambda 表达式&#xff08;最简答、最推荐&am…