Mybatis多条件批量删除的sql语句

今天在写代码的过程中,有一个批量删除的需求,且这个删除的条件是三个字段组成的联合主键。一开始我们新手可能会想到在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

你可能感兴趣的:(sql语法,mybatis,java)