本专栏主要是记录学习完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操作(使用配置文件形式)已经全部都讲解完毕了,所有的链接也在文章开头处的表格中了,有需要的小伙伴可以自己点击链接查看。接下来会讲述新的知识点