mybatis批量插入数据

在导入xls文件和获取json数据批量插入或者更新数据时看到以前的代码竟然是for循环一次插入一条。。。
几千条数据竟然要跑半个小时,其实只要改动一下这么多数据几秒钟就能跑完。
弄个例子方便以后参考
Mapper类

    /**
     * 获取企业列表信息
     * 
     * @param gplist 企业列表信息
     * @return 结果
     */
    public int insertGpLists(@Param("gplist")List<GpList> gplist);

service类

    /**
     * 获取企业列表信息
     * 
     * @param gpList 企业列表信息
     * @return 结果
     */
    public int insertGpLists(List<GpList> gplist);

service.impl类

    /**
     * 企业列表信息
     * 
     * @param gpList 企业列表信息
     * @return 结果
     */
    @Override
    public int insertGpLists(List<GpList> gplist)
    {
        return gpListMapper.insertGpLists(gplist);
    }

mapper类

	<insert id="insertGpLists" parameterType="java.util.List">
        insert into gp_list (jys,mc,dm,qycontent)
        VALUES
        <foreach collection="gplist" item="gp" index="index" separator=",">
            (#{gp.jys},#{gp.mc},#{gp.dm},#{gp.qycontent})
        </foreach>
    </insert>

Controller类

    @GetMapping("/getgpList")
    @ResponseBody
    public AjaxResult getgpList()
    {
		String gplistStr = getIG507("base/gplist");
		JSONArray json = JSONArray.parseArray(gplistStr);
		List<GpList> list = new ArrayList<GpList>();
		for(int i = 0;i <json.size();i++){
			GpList gp = new GpList();
			JSONObject jobj = json.getJSONObject(i);
			gp.setDm(jobj.getString("dm").toString());
			gp.setMc(jobj.getString("mc").toString());
			gp.setJys(jobj.getString("jys").toString());
			gp.setQycontent("");
			list.add(gp);
		}
		int i = gpListService.insertGpLists(list);
		return toAjax(i);
    }

将获取的json循环添加到list内然后执行一次sql就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值