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 ...
随机推荐
- 设置Jmeter默认中文页面
下载安装好Jmeter后默认的是英文,对于我这种学渣来说简直就是受到了1000000点攻击. 所以,如何把英文界面换成中文呢? 方法一(从网上看到的) 启动Jmeter找到 options >c ...
- [bzoj3505][CQOI2014]数三角形_组合数学
数三角形 bzoj-3505 CQOI-2014 题目大意:给你一个n*m的网格图,问你从中选取三个点,能构成三角形的个数. 注释:$1\le n,m\le 1000$. 想法:本来是想着等中考完了之 ...
- Java经典线程同步问题------生产者与消费者
先上代码 class Test { public static void main(String []args) { Queue q=new Queue(); Producer p=new Produ ...
- hdoj-1827-Summer Holiday(scc+缩点)
Summer Holiday Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- [Pulgin] jQuery插件之ajaxFileUpload
一.ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数 ...
- VUE 基础语法
<script> //构造器 new Vue({ el: "#apps", data: { MSG: 'THIS IS A TEST Pages', h2test: ' ...
- king枚举帮助类
可以方便的实现枚举 枚举 public enum DeptType { [Description("科室1")] Professional = , [Description(&qu ...
- JavaScript实现复选框的全选、不选、反选
方法一: <html> <head> <meta charset="utf-8"> <title>无标题文档</title&g ...
- OData + jqgrid 部署在IIS 8.0上可增加但不能删除修改问题
解决方法: <system.webServer>里添加 <modules> <remove name="WebDAVModule" /> < ...
- c++ 编译期与运行期
分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 转自:http://h ...