【Mybatis编程:根据若干个id批量删除相册数据(动态SQL)】

本文详细介绍了如何使用MyBatis进行批量删除操作,包括执行的SQL语句、在AlbumMapper.java接口中添加抽象方法、配置XML映射文件中的SQL语句,以及<foreach>标签的使用规范。通过示例展示了在AlbumMapperTests类中进行测试的方法,帮助读者掌握MyBatis的批量删除功能。
摘要由CSDN通过智能技术生成

目录

1. 执行的SQL语句

2. 在AlbumMapper.java接口添加抽象方法

3. 在AlbumMapper.xml中配置以上抽象方法映射的SQL语句

4. 标签书写规范

5. 在AlbumMapperTests类中编写并执行测试


1. 执行的SQL语句

需要执行的SQL语句大致是:

delete from pms_album where id=? or id=? or ... id=?
delete from pms_album where id in (?,?, ... ?)

注:通常,使用以上第2种做法。

2. 在AlbumMapper.java接口添加抽象方法

AlbumMapper.java接口添加抽象方法:

int deleteByIds(Long[] ids);

或:

int deleteByIds(Long... ids);

或:

int deleteByIds(List<Long> ids);

提示:可变参数在被处理时,本质上就是数组。

3. 在AlbumMapper.xml中配置以上抽象方法映射的SQL语句

AlbumMapper.xml中配置以上抽象方法映射的SQL语句:

<!-- int deleteByIds(Long[] ids); -->
<delete id="deleteByIds">
	DELETE FROM pms_album WHERE id IN (
    	<foreach collection="array" item="id" separator=",">
            #{id}
    	</foreach>
    )
</delete>

4. <foreach>标签书写规范

在配置SQL语句时,<foreach>标签是用于对参数进行遍历的,其属性配置:

  • collection:表示被遍历对象,当抽象方法的参数只有1个且没有配置@Param注解时,如果参数是List集合类型的,则此属性值为list,如果参数是数组类型的(含可变参数),则此属性值为array;否则,此属性值为方法的参数名称,或使用@Param注解后则取值为注解参数中指定的名称;
  • item:表示遍历过程中各元素的变量名,在<foreach>标签子级的占位符(例如#{})中使用此名称可以表示各元素;
  • separator:表示遍历过程中生成各值时的分隔符。

5. 在AlbumMapperTests类中编写并执行测试

@Test
void deleteByIds() {
    Long[] ids = {1L, 3L, 5L};
    int rows = mapper.deleteByIds(ids);
    log.debug("批量删除数据完成,受影响的行数:{}", rows);
}

个人主页:居然天上楼

感谢你这么可爱帅气还这么热爱学习~~

人生海海,山山而川

你的点赞👍 收藏⭐ 留言📝 加关注✅

是对我最大的支持与鞭策

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

居然天上楼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值