批量新增,每500条数据新增一次

Posted zztest

tags:

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

直接上代码

// 商品信息,每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, id);
            }
        }

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>())

 

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

MyBatis批量新增和更新

MyBatis批量新增和更新

mybatis新增和批量新增

mybatis学习之路----mysql批量新增数据

oracle批量新增更新数据

java如何实现定时从数据库查询新增的数据,?