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

本文详细介绍了如何使用MyBatis在JavaWeb中实现单条及批量删除数据的步骤,包括在BrandMapper接口定义方法、编写SQL语句(利用占位符和foreach标签)以及测试类中的实现。文章提供了完整的方法示例,覆盖了从单个ID删除到数组ID批量删除的全过程。
摘要由CSDN通过智能技术生成

本专栏主要是记录学习完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 id
        in (
            <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 id
        in 
            <foreach collection="ids" item="id" separator="," open="(" close=")">
                #{id}
            </foreach>
			;
    </delete>

3.测试类

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

public class MyBatisTest_deleteByIds {
    @Test
    public void deleteByIds() throws IOException {
        //接收参数
        int[] ids = {5,6};

        //加载MyBatis的核心配置文件,获取SqlSessionFactory
        String 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操作(使用配置文件形式)已经全部都讲解完毕了,所有的链接也在文章开头处的表格中了,有需要的小伙伴可以自己点击链接查看。接下来会讲述新的知识点

评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值