• sql 批量跟新sql 语句


    问题:

    更新一批数据,根据不同code 更新不同的时间。

    code 不是主键 。但是也是唯一的。

    解决:

    mybatis-plus  有批量更新的方法

    都是根据ID 更新。

    没法解决问题。

    写 sql 语句。

     entity层

    @Data
    public class UpdateOrderDto {
        /**
         * 订单号
         */
        private String orderCode;
        /**
         * 买家支付时间
         */
        private String paymentTime;
    }

    service层

     

      boolean updateOrderPaymentTime(List<UpdateOrderDto> updateOrderDto);

    impl层

     @Override
        public boolean updateOrderPaymentTime(List<UpdateOrderDto> updateOrderDto) {
            orderMapper.updateOrderPaymentTime(updateOrderDto);
            return true;
        }

    mapper层

    int updateOrderPaymentTime(@Param("updateOrderDto")  List<UpdateOrderDto> updateOrderDto);

    xml层  重点

     <update id="updateOrderPaymentTime">
            UPDATE  htc.htc_order a JOIN
            (
            <foreach collection="updateOrderDto" item="item" separator="UNION">
                SELECT
                <!--使用 ${} shardingsphere官方问题 详细参考 github issues:https://github.com/apache/shardingsphere/issues/8108-->
                "${item.paymentTime}" AS payment_time,
                "${item.orderCode}" AS order_code
            </foreach>
            ) b USING (order_code)
            SET a.payment_time = b.payment_time
        </update>

    将  传进来的list集合 ,循环查询集合属性取别名,与数据库字段相对应,最后取并集。

    通过 USing 的 用法,进行更新操作。妙哉!

    test用例

    说的不是很清楚,理解尚浅,以后深度理解,在做分析。

    明亮教的方法,仅此做记录。

  • 相关阅读:
    jquery、js调用iframe父窗口与子窗口元素的方法整理
    js中的各种宽高以及位置总结
    javascript call与apply关键字的作用
    javascript之window对象
    CSS3 3D立方体效果
    CSS3 3D transform变换
    JS查找字符串中出现次数最多的字符
    写一个函数将传入的字符串转换成驼峰表示法
    数组去重方法
    内核升级得一个模范
  • 原文地址:https://www.cnblogs.com/zq1003/p/15776469.html
Copyright © 2020-2023  润新知