1. 程式人生 > >批量修改,每500條資料更新一次

批量修改,每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>