学无先后,达者为师

网站首页 编程语言 正文

@Delete通过批量删除的方法

作者:小徐敲java 更新时间: 2024-04-06 编程语言

由于MyBatis中@Delete注解在SQL中的语法是通过占位符的方式支持参数绑定,所以在使用#{}传入List类型参数时会默认生成一个单一的问号(?)占位符来代替这个List。但是这里我们要传递的是一个List内的多个ID值,所以当我们执行deleteByIdList方法时,MyBatis会将List作为一个参数处理,并尝试将其绑定到这个单独的占位符上,导致SQL语法错误。因此,为了正确地使用@Delete注解传递List类型参数,需要进行以下两步操作:

1:修改SQL语句,让它匹配List作为参数

@Mapper
public interface OssFileMapper {

    @Delete("<script>" + 
            "DELETE FROM oss_file WHERE id IN " +
            "<foreach item='id' collection='idList' separator=',' open='(' close=')'>" +
                "#{id}" +
            "</foreach>"+
            "</script>")
    void deleteByIdList(List<Long> idList);

}

2:使用

这样就可以正确地使用@Delete注解传递List类型参数进行批量删除操作了。

原文链接:https://blog.csdn.net/qq_19891197/article/details/130196175

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新