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

MyBatis案例 | 使用映射配置文件实现CRUD操作——删除数据

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址:🔥JavaWeb
Java入门篇: 🔥Java基础学习篇
Java进阶学习篇(持续更新中):🔑Java进阶学习篇

在这里插入图片描述
本系列文章会将讲述有关于如何使用MyBatis完成增删查改的操作,预计本系列文章会有以下这些文章,在写完本系列的文章后会有一篇文章罗列这些文章以及其地址(传送门)小伙伴们直接点击查看即可

文章名称文章地址
查询所有数据使用映射配置文件实现CRUD操作——查询所有数据
查询详情使用映射配置文件实现CRUD操作——通过主键查询对应数据
使用映射配置文件实现CRUD操作——多条件查询
使用映射配置文件实现CRUD操作——动态SQL优化条件查询
添加数据使用映射配置文件实现CRUD操作——添加数据
修改全部字段 &修改动态字段使用映射配置文件实现CRUD操作——修改数据
删除一条数据&批量删除数据

一、前言

本文将讲述有关于删除数据的相关知识点。同样的,这里有删除单条数据和批量删除数据,使用的方法不同,所以这里会写两个不同的方法来分别实现这两个效果

二、删除单条数据

1.BrandMapper接口

这里构造一个含参数的方法,参数部分传递需要删除数据对应的id

void deleteById(int id);

2.SQL语句

删除语句的语法是DELETE FROM 表名 WHERE 条件··· 删除单条语句的语法也很简单,这里由于不知道传递的id是什么,所以要用一个参数占位符来写

    <delete id="deleteById">delete from tb_brand where id = #{id};</delete>

3.测试类

这里只需要传递一个需要删除的数据的id即可,这里就不再列出代码,在下面讲述批量删除数据的时候会写出具体的代码

//执行方法
brandMapper.deleteById(id);

三、批量删除数据

1.BrandMapper接口

由于我们要删除多个数据,那么就要把需要删除数据的id(主键)添加到一个集合中,到时候只需要删除集合内的id即可;要注意的是:MyBatis 会将数组参数封装成Map集合,key名称为array,所以要使用@Param注解改变Map集合默认名称,改为我们所希望的名称,那么就要把这个名称传递到注解后的参数中

void deleteByIds(@Param("ids") int[] ids);

2.SQL语句

按照语法,应该是DELETE FROM 表名 WHERE id IN ···,但是由于我们是以数组形式来存储id的,所以要遍历数组取出id,再删除对应的数据。在MyBatis中,有foreach标签帮助我们遍历数组,在这个标签中,还有几个需要知道的标签

  • collection:数组名称

  • separator:分隔符

  • open:起始处拼接符号

  • close:结束时拼接符号

    <delete id="deleteByIds"><!--separator:分隔符open:起始处拼接符号close:结束时拼接符号-->delete from tb_brand where idin (<foreach collection="ids" item="id" separator="," >#{id}</foreach>);</delete>

这里还有另一种写法:加上标签open="(" close=")",但是要注意 in后面的括号要删除,否则会报错:java.sql.SQLException: Operand should contain 1 column(s)

在这里插入图片描述

    <delete id="deleteByIds"><!--separator:分隔符open:起始处拼接符号close:结束时拼接符号-->delete from tb_brand where idin <foreach collection="ids" item="id" separator="," open="(" close=")">#{id}</foreach>;</delete>

3.测试类

在传递参数时,要注意传递的是刚刚我们自己设定的数组名称

public class MyBatisTest_deleteByIds {@Testpublic void deleteByIds() throws IOException {//接收参数int[] ids = {5,6};//加载MyBatis的核心配置文件,获取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//SqlSession获取对象SqlSession sqlSession = sqlSessionFactory.openSession();//获取BrandMapper接口代理对象BrandMapper brandMapper= sqlSession.getMapper(BrandMapper.class);//执行方法brandMapper.deleteByIds(ids);//提交事务sqlSession.commit();//释放资源sqlSession.close();}
}

我们刷新一下,看表格中是否还有id为5和6的数据,发现全部被删除了,也就是说可以实现批量删除数据的功能
在这里插入图片描述

四、结语

至此,使用MyBatis实现CRUD操作(使用配置文件形式)已经全部都讲解完毕了,所有的链接也在文章开头处的表格中了,有需要的小伙伴可以自己点击链接查看。接下来会讲述新的知识点

http://www.lryc.cn/news/6481.html

相关文章:

  • CSDN 编程竞赛二十八期题解
  • DML数据操纵语言
  • 【Hello Linux】Linux工具介绍 (gcc/g++ gdb)
  • TeamFiltration:一款针对O365 AAD账号安全的测试框架
  • 你是真的“C”——Visual Studio 2022(VS2022)编译器 -—实用调试技巧
  • 数据结构与算法:7种必须会的排序以及3种非基于比较排序
  • 数据库用户数
  • nginx如何用html显示多个图片并加入播放链接
  • 【蓝桥杯集训·每日一题】Acwing 3729. 改变数组元素
  • springmvc执行流程
  • SpringMVC(2)
  • Jackson序列化json时null转成空串或空对象
  • 如何将Python的上级目录的文件导入?【from.import】
  • Java实现碧蓝航线连续作战
  • Docker笔记
  • 情人节使用AI TOOL来创建一个甜言蜜语的女伴
  • G-GhostNet(IJCV 2022)原理与代码解析
  • Ethercat系列(5)TWcat3激活过程的协议分析(续1)
  • QT入门Input Widgets之QScrollBar
  • 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)
  • 工序排序问题--约翰逊法精讲
  • WebDAV之葫芦儿·派盘+网盘精灵
  • 计算机网络期末知识点总结
  • 【Vue3 组件封装】vue3 轮播图组件封装
  • 电力国家(行业)标准目录
  • 如何实现倒序输出
  • 遗留系统的自动化测试策略和实践方法
  • 【Android】系统源码下载及编译
  • 基于HTML实现浪漫情人节表白代码(附源代码)
  • PCL 平面拟合——RANSAC