开发者

mybatis使用case when按照条件进行更新方式

开发者 https://www.devze.com 2025-07-26 11:23 出处:网络 作者: linab112
目录myBATis使用case when按照条件更新示例代码说明总结mybatis使用case when按照条件更新
目录
  • myBATis使用case when按照条件更新
    • 示例代码
    • 说明
  • 总结

    mybatis使用case when按照条件更新

    示例代码

    <update id="updateNrPurchaseorderDetailByGoodsBarcode">
        updat编程客栈e nr_purchase_order_detail
        set stored_num =
        <foreach collection="barcodeList" item="item" index="index"
                 separator=" " open="case goods_barcode" close="end">
            when #{item.barcode} then stored_num + #{item.recejavascriptiveNum}
        </foreach>
        ,unstored_num =
        <foreach collection="barcodeList" item="item" index="index"
                 separator=" " open="case goods_barcode" close="end">
            when #{item.barcode} then actual_goods_num - stored_num
        </foreach>
        where goods_barcode in
        <foreach collection="barcodeList" item="item" index="index" separator="," open="(" close=")">
            #{item.barcode}
        </foreach>
        and parent_id = #{id}
    </update>
    <!--caseWhen形式更新-->
    <update id="testCaseWhen" parameterType="Java.util.Map">
        UPDATE ${user}
        <set>
            <trim prefix="id= CASE id" suffix="END,">
                <foreach collection="list" item="param">
                    <if test="param.id != null and id != ''">
                        WHEN #{param.id} THEN #{param.id}
                    </if>
                </foreach>
            </trim>
            <trim prefix="username = CASE id" suffix="END,">
                <fandroidoreach collection="list" item="param">
                    <if test="param.username != null and param.username != ''">
                        WHEN #{param.} THEN #{param.username}
                    </if>
                </foreach>
            <android/trim>
            <trim prefix="password = CASE id" suffix="END,">
                <foreach collection="list" item="param">
                    <if test="param.password != null and param.password != ''">
                        WHEN #{param.id} THEN #{param.password}
                    </if>
                </foreach>
            </trim>
        </set>
        <where>
            id in
            <foreach collection="list" item="param" separator="," open="(" close=")">
                #{param.id}
            </foreach>
        </where>
    </update>
    

    说明

    上述第一个示例中,按照条码进行批量更新,将所有的http://www.devze.com条码对应的入库数量和剩余数量进行更新。

    第二个示例中,又使用了set标签和trim标签,感觉更为复杂。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号