Mybatis 批量插入
来源:互联网 发布:淘宝有货到付款吗 编辑:程序博客网 时间:2024/06/07 03:30
阿里云股票业务有提供一项查询功能,发送股票名称,返回股票编码,在毕业设计的开发过程中,我用到了这个功能。由于需要支付费用,毕设结束后便考虑自己动手实现。
找到了这个地址:http://quote.eastmoney.com/stock_list.html
对股票信息数据进行抓取后入库,有4000多条数据,如果采用传统的入库方式,一条条数据插入,数据库I/O会浪费比较大的资源。
尝试了后,数据如下:本次新增股票数据共4337条,耗时233秒
后面决定使用Mybatis的批处理操作,采用的方式,主要是在mapper文件中使用了foreach标签,举个简单的例子,插入一条语句,是
insert into xxx values xx、xx、xx
现在变成了
insert into xxx values (xx、xx、xx,xx、xx、xx....)
将下一条记录的值直接拼接在sql后面。
批量插入的数据是:本次新增股票数据共4337条,耗时11秒,相比于传统的插入方式,快了20倍,当然,这是比较模糊的数据,在后台的实现中,我是设置为数据量达到1000,就进行插入操作。
具体实现如下:
后台代码
int newCount = 0; long startTime = System.currentTimeMillis(); List<SharesInfo> list = new ArrayList<SharesInfo>(); for (Element ele:eles) { String text = ele.text(); String name = TextUtil.RegexMatch("(.*)\\(",text,1); String code = TextUtil.RegexMatch("\\((.*)\\)",text,1); try{ SharesInfo temp = sharesInfoService.selectBySharesName(name); if(temp == null) { SharesInfo sharesInfo = new SharesInfo(); sharesInfo.setCode(code); sharesInfo.setName(name); //sharesInfoService.addSharesInfo(sharesInfo); list.add(sharesInfo); if(list.size() == 1000){ sharesInfoService.addSharesInfoBatch(list); list.clear(); } newCount ++ ; } }catch (Exception e){ logger.error(name); } } //把零头也进行入库 sharesInfoService.addSharesInfoBatch(list); long endTime = System.currentTimeMillis(); logger.info("本次新增股票数据共"+newCount+"条,耗时"+(endTime-startTime)/1000+"秒");
Mapper.xml文件:
<insert id="insertBatch" parameterType="java.util.List" > insert into sharesinfo (id, code, name ) values <foreach collection ="list" item="info" index= "index" separator =","> (#{info.id,jdbcType=INTEGER}, #{info.code,jdbcType=VARCHAR}, #{info.name,jdbcType=VARCHAR}) </foreach> </insert>
Service层
public void addSharesInfoBatch(List<SharesInfo> list);
阅读全文
1 0
- mybatis批量插入、批量删除
- Mybatis 批量插入、批量更新
- Mybatis-批量查询&&批量插入
- mybatis数据批量插入
- mybatis 批量插入
- mybatis批量插入
- mybatis数据批量插入
- mybatis 批量插入
- mybatis 批量插入
- mybatis批量插入数据
- mybatis 批量插入
- mybatis批量插入
- MyBatis中批量插入
- mybatis 批量插入数据
- MyBatis批量插入数据
- mybatis批量插入
- mybatis数据批量插入
- mybatis 批量插入
- linux下vi操作Found a swap file by the name 【转】
- CentOS 6.4
- Apache和mysql 的压力测试
- 反射
- 再一次读 工厂模式
- Mybatis 批量插入
- 标准库 String 类型
- 标准库vector类型
- php开发--WAMP Zend Framwork安装配置 【转】
- php函数 ~ mkdir的第三个参数
- 原型模式
- array_walk:第三个参数
- 简化tensorflow的启动
- C++学习 常量 const限定符