Mybatis 3+Mysql 实现批量插入

终于实现了ibatis的批量插入,此方法插入3000条数据,比单条插入可以节省一半的时间
XML代码:
<insert id="insertBatch" parameterType="ArrayList">
    insert intouser(id,account,password,active,status,name,gender,active_date,expiry_date,type,remark,group_id,disable,exam_number,mobile)
    values
    <foreach collection="list"item="obj" index="index"separator="," >
       (#{obj.id},#{obj.account},#{obj.password},#{obj.active},#{obj.status},#{obj.name},#{obj.gender},#{obj.active_date},
       #{obj.expiry_date},#{obj.type},#{obj.remark},#{obj.group_id},#{obj.disable},#{obj.exam_number},#{obj.mobile})
    </foreach>
    </insert>
在java中只需要传递list过来就可以了。
我是这样写的:
private ArrayList<Map<String, String>>userList = new ArrayList<Map<String,String>>();

Map<String,String>userMap= new HashMap<String,String>();
           userMap.put("id", userId);
           userMap.put("account", arr[0]);
           userMap.put("password", pas);
           userMap.put("active", String.valueOf(1));
           userMap.put("status", String.valueOf(1));
           userMap.put("name", arr[1]);
           userMap.put("gender", String.valueOf(gender));
           userMap.put("active_date", active_date);
           userMap.put("expiry_date", expiry_date);
           userMap.put("type", String.valueOf(3));
           userMap.put("remark", null);
           userMap.put("group_id", String.valueOf(1));
           userMap.put("disable", String.valueOf(0));
           userMap.put("Exam_number", arr[15]);
           userMap.put("phoneNumber", arr[14]);
           userList.add(userMap);
通过循环将数据加入到list,最后将list传递。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed

原文地址:https://www.cnblogs.com/sjwudhwhhw/p/10164812.html

时间: 2024-11-06 11:14:14

Mybatis 3+Mysql 实现批量插入的相关文章

Mybatis 针对oracle的批量插入

xml文件参数对象: 1 public class Columns{ 2 private String basedate_code; 3 private String tableName; 4 private String codeDescribeindex; 5 private String codeInfoindex; 6 private String codePymindex; 7 private List<Info> infos; Dao层方法: public void bulkIns

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

MyBatis Oracle 使用序列批量插入数据库

由于现在项目昨晚批处理作业抽取数据主键生成器出现了问题,紧急解决用序列作为主键.   底层使用MyBatis与Oracle 数据库库交互. 和度娘交谈了很久她都没有给出解决方案.为   此自己写了想了一种方式,没想到一次测试完全通过.   大致demo如下  java 代码  1 /** 2 * 文件名称: InsertBatch 3 * 内容摘要: 测试 MyBatis 使用序列批量插入 4 * 创 建 人: sunrise 5 * 创建日期:2015-6-18 下午9:16:06 6 * 修

mybatis使用foreach进行批量插入和删除操作

一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Param中的参数必须和mapper.xml中foreach的collection对应,若果不写@Param注解并且只传入一个list作为参数,则collection默认填list 2.mapper.xml <insert id="insertBatchRoleUser"> INS

关于mybatis用mysql时,插入返回自增主键的问题

公司决定新项目用mybatis,虽然这个以前学过但是一直没用过都忘得差不多了,而且项目比较紧,也没时间去系统点的学一学,只好很粗略的百度达到能用的程度就行了. 其中涉及到插入实体要求返回主键id的问题,以前用ssh配合oracle很容易实现,因为有sequence,而且mysql也基本没用过,所以只好去百度了. 这个内容还是比较好查的,如下: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapp

2500-使用MyBatis操作MySQL进行批量更新的注意事项

原则上一条SQL只更新一条数据库操作,但有时需要批量操作数据,特别是一些DML语句,在操作数据库时,数据库会报出异常,不允许混合语句,此时需要额外配置进行兼容. 例如: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ve

mysql循环批量插入测试数据

DELIMITER 其实就是定义了一个语句执行的结束符 MySql中的delimiter: http://blog.sina.com.cn/s/blog_4c197d420101d3oa.html 1:定义存储过程 DROP PROCEDURE test_insert ; DELIMITER $$ //定义结束符 CREATE PROCEDURE test_insert()     BEGIN      DECLARE i INT DEFAULT 0;      START TRANSACTIO

Mybatis+mysql批量插入性能分析测试

前言 今天在网上看到一篇文章(后文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 发现了一种有关于mybatis批量插入的新方法,而且看了文章发现我原来的方法好像有点问题,但是由于文章中使用的环境是sqlserver而我经常使用的是mysql所以还是需要亲自来试试. 环境说明 项目使用springboot mybatis 数据库mysql5.7 使用本地mysql所以网络可以忽略不计 插入对象完全相同,只有id自增 表结构如下: CREATE

增加批量插入方法

近期工作中发现批量插入的方法需求越来越大.所以在ORM中增加了MYSQL的批量插入方法.由三个方法组成,可以使用在不同情况下. 1.根据传入的实体集合生成批量插入的SQL语名 GetInsertSqlBatch() 2.在方法1的基础上增加一个执行并返回是否成功的功能 ExecuteInsertModelBatch(). 3.上面两个方法都没有控制每次批量插入的最大数量.只适用于小量批量插入情况.如果实体集合一次性传入1万,10万也做一次提交的话好像不太合适吧.所以就有了第三个方法.第三个方法是