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标签,感觉更为复杂。

总结

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

相关文章

  • java如何获取用户登录ip、浏览器信息、SessionId

    java如何获取用户登录ip、浏览器信息、SessionId

    这篇文章主要介绍了java如何获取用户登录ip、浏览器信息、SessionId,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 彻底搞明白Spring中的自动装配和Autowired注解的使用

    彻底搞明白Spring中的自动装配和Autowired注解的使用

    这篇文章主要介绍了彻底搞明白Spring中的自动装配和Autowired注解的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 如何使用Java语言编写打地鼠游戏全过程

    如何使用Java语言编写打地鼠游戏全过程

    打地鼠是我们非常熟悉的一款小游戏,它的游戏结构和规则也都比较简单,那么如果能够亲自徒手开发这样的一款经典小游戏呢?这篇文章主要给大家介绍了关于如何使用Java语言编写打地鼠游戏的相关资料,需要的朋友可以参考下
    2024-06-06
  • java实现对两张表进行数据同步

    java实现对两张表进行数据同步

    文章描述了在Java中使用SQL Server的MERGE语句实现两张表的同步操作,适用于主表查询、附表增删改的场景,MERGE语句可以同时执行插入和更新操作,适用于Oracle和SQL Server,但不适用于MySQL和PostgreSQL,可通过自定义注解实现接口调用后的同步操作
    2026-05-05
  • Springboot 中使用Sentinel的详细步骤

    Springboot 中使用Sentinel的详细步骤

    文章介绍了如何在SpringBoot中使用Sentinel进行限流和熔断降级,首先添加依赖,配置Sentinel控制台地址,定义受保护的资源,配置流控规则,启动Sentinel控制台和SpringBoot应用,最后测试和监控,感兴趣的朋友一起看看吧
    2025-02-02
  • 彻底了解java中ReentrantLock和AQS的源码

    彻底了解java中ReentrantLock和AQS的源码

    这篇文章主要介绍了彻底了解java中ReentrantLock和AQS的源码,想了解锁机制的同学,一定要参考下
    2021-04-04
  • Java ArrayList add(int index, E element)和set(int index, E element)两个方法的说明

    Java ArrayList add(int index, E element)和set(int index, E el

    今天小编就为大家分享一篇关于Java ArrayList add(int index, E element)和set(int index, E element)两个方法的说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • IDEA反编译jar,查看源码方式

    IDEA反编译jar,查看源码方式

    该篇文章总结了查看Java本地jar包注释的几种方法,包括使用快捷键CTRL+q和在设置中设置自动浮现注释
    2024-11-11
  • Mybatis 查询语句条件为枚举类型时报错的解决

    Mybatis 查询语句条件为枚举类型时报错的解决

    这篇文章主要介绍了Mybatis 查询语句条件为枚举类型时报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • SpringBoot容器化部署之Docker与Kubernetes操作指南

    SpringBoot容器化部署之Docker与Kubernetes操作指南

    本文介绍了如何将SpringBoot应用进行容器化部署,通过Docker和Kubernetes进行编排和管理,涵盖了从项目创建、Dockerfile编写、镜像构建、容器运行到Kubernetes部署、监控和维护的全流程
    2025-12-12

最新评论