Mybatis 如何批量删除数据的实现示例

 更新时间:2021年03月05日 14:12:32   作者:纵有千千星晚  
这篇文章主要介绍了Mybatis 如何批量删除数据的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本期以最常用的根据id批量删除数据为例:

接口设计1:List类型单参数

Integer deleteByIds(List<Integer> ids);

接口设计2:Array数组类型单参数

Integer deleteByIds(Integer[] ids);

接口设计3:可变长度参数

Integer deleteByIds(Integer... ids);

此以接口2为例子mapper.xml配置如下:

<delete id="deleteByIds">
  DELETE FROM t_user WHERE id IN (
   <foreach collection="array" item="id" separator=",">
      #{id}
   </foreach>
  )
</delete>

关于<foreach>节点的配置说明:

collection:需要被遍历的对象,当抽象方法的参数只有1个且没有添加@Param注解时,如果参数类型是List集合,则取值为list,如果参数类型是数组,则取值为array;当抽象方法的参数超过1个,就一定添加了@Param注解,则取值为@Param注解配置的参数值;

如下图接口所示:

item:遍历过程中的每一个元素数据,当前属性可以自定义值表示元素数据的名称,在<foreach>节点的子级,使用#{}占位符时,就可以使用这个名称来表示数据;

separator:遍历生成的代码片段中,各元素数据之间的分隔符号;

open / close:遍历生成的代码片段的最左侧字符串/最右侧字符串。

补充知识点:关于#{}和${}格式的占位符

MyBatis允许在配置SQL语句时使用#{}和${}这2种格式的占位符来表示参数值。

简单原则:在原本使用JDBC技术编程时,编写SQL语句时可以写问号(?)的位置,都使用#{}格式的占位符,不可以写问号的位置,必须使用${}格式的占位符!

使用#{}格式的占位符,只能表示某个值!MyBatis在处理时,会通过预编译的方式进行处理,即:先使用问号对占位符表示的值进行占位,并将整个SQL语句交由MySQL进行编译相关的处理(包括词法分析、语义分析、编译),当编译完成后,再将值代入到编译成功的SQL语句中一并执行。简单来说,使用#{}格式的占位符时,最终处理机制是使用了预编译的!所以,使用这种格式的占位符时,在编写SQL时不需要关心值的数据类型的问题,并且,不存在SQL注入的风险!

使用${}格式的占位符,可以表示SQL语句中的任意片段!MyBatis在处理时,会先将${}格式占位符对应的值拼接到SQL语句中,然后再将SQL语句交由MySQL进行编译相关处理,也就是说,${}格式占位符的值在编译之前就已经代入到SQL语句中了!很显然,在处理${}格式的占位符时,没有(也不可能)使用预编译!所以,使用这种格式的占位符时,需要自行在SQL语句中考虑数据类型的问题,例如字符串类型的值需要使用一对单引号框住!另外,还存在SQL注入的风险!

到此这篇关于Mybatis 如何批量删除数据的实现示例的文章就介绍到这了,更多相关Mybatis 批量删除数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA复制数组和重置数组大小操作

    JAVA复制数组和重置数组大小操作

    这篇文章主要介绍了JAVA复制数组和重置数组大小操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringMVC实现Controller的三种方式总结

    SpringMVC实现Controller的三种方式总结

    这篇文章主要介绍了SpringMVC实现Controller的三种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • javaweb上传下载实例完整版解析(下)

    javaweb上传下载实例完整版解析(下)

    这篇文章主要为大家详细解析了javaweb上传下载实例,本文重点在于文件下载功能的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 有关Java常见的误解小结(来看一看)

    有关Java常见的误解小结(来看一看)

    下面小编就为大家带来一篇有关Java常见的误解小结(来看一看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java实现导出Word文档的示例代码

    Java实现导出Word文档的示例代码

    poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中。本文就利用它实现导出Word文档功能,需要的可以参考一下
    2023-02-02
  • Spring Boot 2.0.0 终于正式发布-重大修订版本

    Spring Boot 2.0.0 终于正式发布-重大修订版本

    北京时间 2018 年 3 月 1 日早上,如约发布的 Spring Boot 2.0 在同步至 Maven 仓库时出现问题,导致在 GitHub 上发布的 v2.0.0.RELEASE 被撤回
    2018-03-03
  • 关于Dubbo初始问题

    关于Dubbo初始问题

    这篇文章主要介绍了关于Dubbo初始问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java开发工作中对InheritableThreadLocal使用思考

    java开发工作中对InheritableThreadLocal使用思考

    这篇文章主要为大家介绍了java开发工作中对InheritableThreadLocal使用思考详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • spring中的DI步骤详解

    spring中的DI步骤详解

    本文主要介绍了bean的装配实现过程,通常对于简单数据类型数据初始主要在获得对象后,使用setter方法完成,所谓的装配主要是复杂数据类型的依赖注入,感兴趣的朋友一起看看吧
    2023-11-11
  • java异常继承何类,运行时异常与一般异常的区别(详解)

    java异常继承何类,运行时异常与一般异常的区别(详解)

    下面小编就为大家带来一篇java异常继承何类,运行时异常与一般异常的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论