批量修改,每500条数据更新一次

Posted zztest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量修改,每500条数据更新一次相关的知识,希望对你有一定的参考价值。

// 商品信息,每500条批量更新一次        
        if(null != updateItemList && updateItemList.size() > 0){                                 
            Map<Integer,List<Item>> itemMap = new HashMap<Integer, List<Item>>();
            itemMap.put(1, new ArrayList<Item>());
            for(Item item : updateItemList){
                List<Item> groupItemList = itemMap.get(itemMap.size());
                if(groupItemList.size() == 500){
                    groupItemList = new ArrayList<Item>();    
                    itemMap.put(itemMap.size() + 1, groupItemList);
                }
                groupItemList.add(item);
            }
            for (Integer key : itemMap.keySet()) {
                List<Item> groupItemList = itemMap.get(key);                    
                itemDao.batchUpdate(groupItemList, id);
            }
}

sql:

<!-- 批量修改商品信息 --> 
    <update id="batchUpdate" parameterType="java.util.List">
           UPDATE tbl_item 
         <trim prefix="set" suffixOverrides=",">
                <trim prefix="description = case" suffix="end,">
                <foreach collection="updateItemList" item="item" index="index">                
                    <if test="item.description != null">
                        when item_no=#{item.itemNo} then #{item.description}
                    </if>
                </foreach>
            </trim>
            <trim prefix="shelf_life = case" suffix="end,">
                <foreach collection="updateItemList" item="item" index="index">
                    <if test="item.shelfLife != null">
                        when item_no=#{item.itemNo} then #{item.shelfLife}
                    </if>
                </foreach>
            </trim>           
            <trim prefix="update_by = case" suffix="end,">
                <foreach collection="updateItemList" item="item" index="index">
                    when item_no=#{item.itemNo} then #{updateBy}
                </foreach>
            </trim>
            <trim prefix="update_date = case" suffix="end,">
                <foreach collection="updateItemList" item="item" index="index">
                    when item_no=#{item.itemNo} then now()
                </foreach>
            </trim>
              
           </trim>
           where item_no in
        <foreach collection="updateItemList" separator="," item="item" index="index" open="(" close=")">
            #{item.itemNo}
        </foreach>
     </update>     

 


以上是关于批量修改,每500条数据更新一次的主要内容,如果未能解决你的问题,请参考以下文章

mybatis批量更新两种方式:1.修改值全部一样 2.修改每条记录值不一样

如何使用 C#/SQL 批量更新 1000 条记录

PHP如何批量更新数据?急!!!

java 数据库批量修改

oracle几百万条数据怎么update

mysql数据批量更新,谢谢