今天在写代码的过程中,有一个批量删除的需求,且这个删除的条件是三个字段组成的联合主键。一开始我们新手可能会想到在service层使用for循环来多次调用mapper层的删除方法,这样虽然能够实现功能,但是消耗的系统资源很多,效率不高。
我也在网上找了找,发现这样的例子很少,所以我把这次的代码贴出来,仅供参考。
代码如下:
<delete id="deletePubPrintTmplComputers" parameterType="java.util.List">
delete from PUB_PRINT_TMPL_COMPUTER
<foreach collection="listData" item="item" separator="or" index="index">
<where>
<if test="item.tmplCode != null">
and TMPL_CODE = #{item.tmplCode, jdbcType=VARCHAR}
</if>
<if test="item.tmplSeq != null">
and TMPL_SEQ = #{item.tmplSeq, jdbcType=INTEGER}
</if>
<if test="item.computerCode != null">
and COMPUTER_CODE = #{item.computerCode,jdbcType=VARCHAR}
</if>
</where>
</foreach>
</delete>
这里是使用foreach语法进行批量操作,要特别注意的是,在每个if判断中,条件语句末尾不要加逗号,不然会报错,显示sql命令未正确结束。
好了,先记录到这里,我要去继续敲代码了,欢迎大佬们留言指教。
2020/6/16 14:35:28