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

 更新时间:2025年07月24日 08:38:09   作者:linab112  
示例一通过条码批量更新入库和剩余数量,直接高效;示例二使用set和trim标签,实现动态字段更新与条件优化,结构更复杂但灵活性更高

mybatis使用case when按照条件更新

示例代码

<update id="updateNrPurchaseOrderDetailByGoodsBarcode">
    update 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.receiveNum}
    </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,">
            <foreach collection="list" item="param">
                <if test="param.username != null and param.username != ''">
                    WHEN #{param.} THEN #{param.username}
                </if>
            </foreach>
        </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>

说明

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

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mybatis控制台打印SQL执行信息的方法详解

    Mybatis控制台打印SQL执行信息的方法详解

    SQL性能监控是一个程序必要的功能,通常我们可以使用数据库自带的客户端工具进行SQL性能分析,本章节只实现Mybatis执行时对执行SQL进行拦截,控制台打印执行SQL包括参数、执行方法以及执行时间,需要的朋友可以参考下
    2024-11-11
  • 基于mybatis查询结果映射不到对象的处理

    基于mybatis查询结果映射不到对象的处理

    这篇文章主要介绍了mybatis查询结果映射不到对象的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java全面解析ttf字体的信息

    Java全面解析ttf字体的信息

    文章介绍了Java如何解析TTF字体文件,提取字体的基本信息、版本信息、版权和许可证、字符映射以及各种表格信息,通过代码解析,可以获取字体的详细描述和度量数据
    2025-01-01
  • java语言如何生成plist下载ipa文件

    java语言如何生成plist下载ipa文件

    这篇文章主要介绍了java语言如何生成plist下载ipa文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • jmeter中json提取器如何提取多个参数值

    jmeter中json提取器如何提取多个参数值

    关于jmeter中的正则表达式及json提取器可以提取响应值,但是实际可以需要上个接口的多个响应值,本文就详细的介绍一下如何使用,感兴趣的可以了解一下
    2021-11-11
  • Java生成Jar包方法步骤

    Java生成Jar包方法步骤

    在Java开发中,打包成JAR文件是一种常见的方式,本文主要介绍了Java生成Jar包方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • java8中:: 用法示例(JDK8双冒号用法)

    java8中:: 用法示例(JDK8双冒号用法)

    这篇文章主要给大家介绍了关于java8 中的:: 用法(JDK8双冒号用法)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Mybatis配置返回为修改影响条数方式

    Mybatis配置返回为修改影响条数方式

    这篇文章主要介绍了Mybatis配置返回为修改影响条数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java基础字符编码与内存流详细解读

    Java基础字符编码与内存流详细解读

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • SpringBoot整合Spring Boot Admin实现服务监控的方法

    SpringBoot整合Spring Boot Admin实现服务监控的方法

    这篇文章主要介绍了SpringBoot整合Spring Boot Admin实现服务监控,内容包括Server端服务开发,Client端服务开发其中Spring Boot Admin还可以对其监控的服务提供告警功能,如服务宕机时,可以及时以邮件方式通知运维人员,感兴趣的朋友跟随小编一起看看吧
    2022-03-03

最新评论