Mybatis批处理

批量插入数据

复制代码
<insert id="batchInsert" parameterType="java.util.List">
    insert into t_goods
     (title,sub_title,original_cost,current_price,
     discount,is_free_delivery,category_id)
    values
    <foreach collection="list" item="item" index="index" separator=",">
       (#{item.title},#{item.subTitle},#{item.originalCost},
        #{currentPrice},#{discount},#{isFreeDelivery},#{categoryId})
    </foreach>
</insert>
复制代码
复制代码
    @Test
    public void testBatchInsert(){
        SqlSession sqlSession=null;
        try{
            sqlSession=MyBatisUtils.openSession();
            List<Goods> list=new ArrayList();
            for(int i=0;i<10000;i++){
                Goods goods = new Goods();
                goods.setTitle("");
                //goods.set...();
                goods.setCategoryId(43);

                list.add(goods);
            }
            sqlSession.insert("goods.batchInsert",list);
            sqlSession.commit();
        }catch (Exception e){
            if(sqlSession!=null){
                sqlSession.rollback();
            }
            throw e;
        }finally {
            MyBatisUtils.closeSession(sqlSession);
        }
    }
复制代码

 批量插入数据的局限:

  1.无法获得插入数据的id  2.批量生成的SQL太长,可能会被服务器拒绝

批量删除

 

复制代码
<delete id="batchDelete" parameterType="java.util.List">
    delete t_goods where goods_id in
    <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
        #{item}
    </foreach>
</delete>
复制代码
复制代码
    @Test
    public void testBatchDelete(){
        SqlSession sqlSession=null;
        try{
            sqlSession=MyBatisUtils.openSession();
            List list=new ArrayList();
            list.add(1920);
            list.add(1921);
            list.add(1922);
            sqlSession.delete("goods.batchDelete", list);
            sqlSession.commit();
        }catch (Exception e){
            if(sqlSession!=null){
                sqlSession.rollback();
            }
            throw e;
        }finally {
            MyBatisUtils.closeSession(sqlSession);
        }
    }
复制代码

posted @   南风知君  阅读(457)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示