直接上代码

// 商品信息,每500条批量新增一次
        if(null != itemList && itemList.size() > 0){                                  
            Map<Integer,List<Item>> itemMap = new HashMap<Integer, List<Item>>();
            itemMap.put(1, new ArrayList<Item>());
            for(Item item : itemList){
                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.batchInsert(groupItemList);
            }
        }

SQL:

<!-- 批量新增商品信息 -->
<insert id="batchInsert">    
    INSERT INTO tbl_item(
        item_no ,description
    )
    VALUES
    <foreach collection ="itemList" item="item" separator =","> 
        (
        #{item.itemNo} ,#{item.description} 
        )
    </foreach>    
</insert>

 说说我遇到的问题:第一个就是本来是用的List分组,每500条数据一组,后来拿1000条数据测试的时候发现,list的size为2没问题,但是两组数据相同,且都是第501到1000条,一直没搞明白,后来换了map分组就没问题了,请知道的大佬指教下;

第二个问题就是 new完map后直接put值:itemMap.put(0, new ArrayList<Item>());直接空指针,改为itemMap.put(1, new ArrayList<Item>())

 
posted on 2018-11-30 09:19  请叫我李铁柱  阅读(1113)  评论(0编辑  收藏  举报