Mybatis批量插入的代码实现
简单的学习总结一下,希望能帮到需要的同学!
1.mapper.xml文件sql语句如下:
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
insert into linklist (version_id, link_name,link_url,case_total,
pass_rate,bug_num,remarks,isDelete)
values
<foreach collection="list" item = "linkList" index = "index" separator=",">
(#{linkList.versionId,jdbcType=INTEGER},
#{linkList.linkName,jdbcType=VARCHAR},#{linkList.linkUrl,jdbcType=VARCHAR},
#{linkList.caseTotal,jdbcType=INTEGER},#{linkList.passRate,jdbcType=INTEGER},
#{linkList.bugNum,jdbcType=INTEGER},#{linkList.remarks,jdbcType=VARCHAR},
#{linkList.isDelete,jdbcType=INTEGER})
</foreach> </insert>
2.Mybatis-config.xml文件中需要加上下面的配置:
<mappers>
<mapper resource="mapper/Mapper.xml"/> </mappers>
3.dao层代码:
/**
* 批量插入
* @param linkLists
* @return
*/
int insertBatch(List<LinkList> linkLists);
4.service层代码如下:
/**
* 批量插入
* @param linkLists
* @return
*/
int insertBatch(List<LinkList> linkLists);
5.impl接口实现:
@Override
public int insertBatch(List<LinkList> linkLists) { return linkListDao.insertBatch(linkLists);
}
6.controller层实现代码如下:
if (size > 1) {//批量插入
long beginTime = System.currentTimeMillis();
System.out.println("multi begin time:" + beginTime);
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);//关闭session的自动提交;
try {
int result = sqlSession.insert("com.netease.klqa.report.dao.LinkListDao.insertBatch", insertData);
sqlSession.commit();
// System.out.println("dyy" + result); } finally {
sqlSession.close();
} System.out.println("multi end time:" + (System.currentTimeMillis() - beginTime));
} else if (size == 1) {//单条插入
System.out.println("one begin time:" + System.currentTimeMillis());
LinkList linkList = insertData.get(0);
if (linkList != null) {
linkList.setVersionId(versionId);
linkListService.insert(linkList);
}
System.out.println("one end time:" + System.currentTimeMillis());
}
总结:至此就可以实现简单的批量插入了,数据量少的时候,性能优势不是很明显,可以使用单条插入;当数据量很大的时候,此时就能凸显批量插入的优势。
Mybatis批量插入的代码实现的更多相关文章
- MyBatis批量插入数据(MySql)
由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应 ...
- 【mybatis批量插入】
mybatis批量插入操作: MySQL:1.INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三'),(2,'李四') 2.INS ...
- MyBatis 批量插入数据的 3 种方法!
批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于<MyBatis Plus 批量数据插入功能,yyds!>的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 ...
- mybatis批量插入数据到oracle
mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“ 错误解决方法 oracle批量插入使用 insert a ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- 解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束
Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的 ...
- 160421、MyBatis批量插入数据
在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些 ...
- mybatis批量插入oracle时报错:unique constraint (table name) violated
mybatis批量插入oracle时报错:unique constraint (table name) violated,是因为插入的集合中有两条相同唯一约束的数据.
- Mybatis 批量插入数据
--mybatis 批量插入数据 --1.Oracle(需要测试下是否支持MySQL) < insert id ="insertBatch" parameterType=&q ...
随机推荐
- elasticsearch 权威指南搜索阅读笔记(四)
多索引多type搜索 分页搜索 每页5条 查询一到3页数据 第一页:http://127.0.0.1:9200/blogs2/product/_search?size=5&from=0 第二页 ...
- 数据库工具——Navicat Premium使用技巧
Navicat Premium 常用功能讲解 1.快捷键 1.1. F8 快速回到当前对象列表 1.2. Ctrl + q 打开查询界面 1.3. Ctrl + d 快速修改当前的表结构 1.4 ...
- 0807再整理SQL执行流程
转自http://www.cnblogs.com/annsshadow/p/5037667.html MySQL架构总览->查询执行流程->SQL解析顺序 前言: 一直是想知道一条SQ ...
- 程序错误通常有2种,一种是运行时错误,这种错误ide会抛出异常,我们可以根据异常寻找问题.
1.程序错误通常有2种,一种是运行时错误,这种错误ide会抛出异常,我们可以根据异常寻找问题. 2.可以根据异常寻找问题. 3.可以根据异常寻找问题
- 我是这样记录javascript知识的------Day31
在陆续研究了几个javascript的几个小应用后,也算对javascript有了更深一点的认识,头脑中大约都有些印象,总体上说却有些模糊,这时.我知道,是时候看看w3cshool的这部分介绍了. 没 ...
- Unity3D 射线指定层获取GameObject 注意 LayerMask
这一篇是纯技术讨论,看过我前面文章的童鞋应该清楚,我的奔跑是靠鼠标响应的,鼠标点到哪就跑到哪,后来又有了界面,麻烦就来了,我的界面居然能点 穿.我不希望点界面的时候还能点到界面后面的地面上,角色傻不拉 ...
- Android之——ContentProvider操作XML
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47682559 不多说,不废话,直接上代码,大家一看都懂得 /** * Conten ...
- BZOJ1053 反素数
题目大意 对于任何正整数x,其约数的个数记作g(x).如果某个正整数x满足对任意的0<i<x,都有g(x)>g(i) ,则称x为反质数.现在给定一个数N,求出不超过N的最大的反质数. ...
- virtualbox 安装虚拟机(centos7) 并映射本地文件夹至虚拟机(增强工具)
一.安装环境 操作系统:windows10 virtualbox: 5.2.20 (在安装virtualbox 时可能需要 进入BIOS 设置虚拟化系统启动) centos7:http://mirro ...
- VirtualBox 5.1.14 获取VirtualBox COM对象错误
Oracle VM VirtualBox 5.1.14 安装完成之后显示错误, Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but C ...