使用mybatis批量修改多个字段

项目中统计数据按照每天96个点统计,每15分钟统计一次,但是到采集时间点以后数据不会完全收集到,数据会在后续不断补充并趋于完整,为了尽可能的充分统计到准确的数据我们每一个时刻进行批量更新已经统计过的字段。

对于需要批量统计的数据我们放到fieldNameList里面,把对应字段的数值放到totalLoadList。

表中需要添加对应的唯一索引用于更新数据

valList批量插入或者修改的数据

fieldNameList批量修改的字段名称列表

void batchSaveOrUpdateDuplicate(@Param("valList") List<ValVO> valList,
	                @Param("fieldNameList") List<String> fieldNameList);

 totalLoadList批量修改的字段值,必须和fieldNameList.size一样

@Data
@EqualsAndHashCode(callSuper = false)
public class ValVO{

    @ApiModelProperty("统计类型")
    private String statisType;

    @ApiModelProperty("区域等级1省2市3区县")
    private int areaLevel;

    @ApiModelProperty("区域编号")
    private String areaCode;

    @ApiModelProperty("区域名称")
    private String areaName;

    @ApiModelProperty("统计的数值")
    private List<BigDecimal> totalLoadList;

}

xml

<insert id="batchSaveOrUpdateDuplicate">
    INSERT INTO `data_statistics` (`level`, `area_code`, `area_name`, `data_date`, `data_type`,
    <foreach collection="fieldNameList" item="item" index="index" separator=",">
    ${item}
    </foreach>
    )
    VALUES
    <foreach collection="valList" item="item" index="index" separator=",">
    ( #{item.areaLevel},#{item.areaCode}, #{item.areaName},#{date}, #{item.statisType},
        <foreach collection="item.totalLoadList" item="val" index="index1" separator=",">
        #{val}
        </foreach>
        )
    </foreach>
    ON DUPLICATE KEY UPDATE
    <foreach collection="fieldNameList" item="item" index="index" separator=",">
    ${item}=VALUES(${item})
    </foreach>
</insert>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值