• 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用例

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

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

  • 相关阅读:
    1.1 js 预解释(变量的提升,浏览器的加载机制)
    js 原型链详解
    ES6模块 与 CommonJS的差异
    export,import,export default,import()区别
    css权重优先级
    CSS3如何实现0.5边框
    JS 时间戳转换成具体时间
    http协议(二)请求和响应报文的构成
    http协议(一)一些基础知识
    mac homebrew  常用命令
  • 原文地址:https://www.cnblogs.com/zq1003/p/15776469.html
Copyright © 2020-2023  润新知