MyBatis 3 的批量删除

    目前项目组持久层用的是 MyBatis 3(v 3.0.4),很多页面涉及到批量删除,查阅了一下myBatis 官方文档,文当中提到需要在MyBatis 的实体配置文件中配置一个元素,<foreach></foreach>  就是该元素。下面给出文档中关于该元素的介绍:

 

    另外一个动态SQL通用的必要操作是迭代一个集合,通常是构建在IN条件中的。比如:

<select id="selectPostIn" resultType="domain.blog.Post">

SELECT  *  FROM POST P  WHERE ID in

<foreach item="item" index="index" collection="list"

open="(" separator="," close=")">

#{item}

</foreach>

</select>

     foreach元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然地附加多余的分隔符。

注意:你可以传递一个List实例或者数组作为参数对象传给MyBatis。当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称在作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。

 

 

     以下为是我写的Sql,仅供参考:

 

<!-- 通过主键集合批量删除记录 -->

<delete id="batchRemoveUserByPks" parameterType="java.util.List">

DELETE FROM LD_USER WHERE ID in 

<foreach item="item" index="index" collection="list" open="(" separator="," close=")">

#{item}

</foreach>

</delete>

 

     <delete> 元素的及其属性此处就不罗嗦了。下面说说<foreach>元素,该元素的 item="item" index="index" collection="list" ,上述的这三个属性我都没做任何修改,直接放在此处使用,包括  open="("  、 separator=","  、  close=")" 这个三个元素也是未做任何修改,需求刚好跟此吻合。每个属性的名字起的非常好,基本上一看就明白什么意思。唯一需要强调的是<foreach>元素中的  #{item},该处应该必须是跟元素中的这个  item="item" 属性一致,这个属性的name 应该是可以自定义的,还没看MyBatis 的源码,此处就不多说了。有兴趣的话可以自己做个Demo 看看。下面的是调用方法的代码片段

 

       List<String> idList = new ArrayList<String>();

 

       idList.add(1);

       idList.add(2);

       idList.add(3);

 

       userDao.delete("batchRemoveUserByPks",idList);

 

 

    至此,一个批量删除就搞定了。关于文档中提到的可以直接传过来一个数组,我木有用到过,有兴趣的可以自己些个小Demo 实验一下。虽然第一次用MyBatis,不过感觉用着还是比较舒服的,非常灵活的配置,除了写Sql 麻烦点外(其实完全可以选择用一些工具生成相关SQL文件,当然多多少少还是需要修改的),但这也是MyBatis 的特色,毕竟灵活就意味着自己得更多的手动!吐舌头

 

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值