原文:https://blog.csdn.net/xu1916659422/article/details/77971867

接下来两节要探讨的是批量插入和批量更新,因为这两种操作在企业中也经常用到。

mysql新增语句

insert into 表名(字段,字段。。。) values ( 值,值 。。。);此种适合单条插入。

批量插入,

一种可以在代码中循环着执行上面的语句,但是这种效率太差,下面会有对比,看看它有多差。

另一种,可以用mysql支持的批量插入语句,

insert into 表名(字段,字段。。。) values ( 值,值 。。。),( 值,值 。。。),( 值,值 。。。)....

这种方式相比起来,更高效。

下面开始来实现。

select uuid()

insert into t_customer (id,c_name,c_sex,c_ceroNo,c_ceroType,c_age)

values (#{id},#{name},#{sex},#{ceroNo},#{ceroType},#{age})

insert into

t_customer (id,c_name,c_sex,c_ceroNo,c_ceroType,c_age)

values

((select uuid()),#{cus.name},#{cus.sex},#{cus.ceroNo},#{cus.ceroType},#{cus.age})

实体model对象

package com.soft.mybatis.model;

/**

* Created by xuweiwei on 2017/9/10.

*/

public class Customer {

private String id;

private String name;

private Integer age;

private Integer sex;

private String ceroNo;

private Integer ceroType;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public Integer getSex() {

return sex;

}

public void setSex(Integer sex) {

this.sex = sex;

}

public String getCeroNo() {

return ceroNo;

}

public void setCeroNo(String ceroNo) {

this.ceroNo = ceroNo;

}

public Integer getCeroType() {

return ceroType;

}

public void setCeroType(Integer ceroType) {

this.ceroType = ceroType;

}

@Override

public String toString() {

return "Customer{" +

"id='" + id + '\'' +

", name='" + name + '\'' +

", age=" + age +

", sex=" + sex +

", ceroNo='" + ceroNo + '\'' +

", ceroType='" + ceroType + '\'' +

'}';

}

}

接口

int add(Customer customer);

int batchInsert(Map param);

实现

/**

* 新增数据

* @param customer

* @return

*/

public int add(Customer customer) {

return insert("customer.insert", customer);

}

/**

* 批量插入数据

* @param param

* @return

*/

public int batchInsert(Map param) {

return insert("customer.batchInsert", param);

}

/**

* 公共部分

* @param statementId

* @param obj

* @return

*/

private int insert(String statementId, Object obj){

SqlSession sqlSession = null;

try {

sqlSession = SqlsessionUtil.getSqlSession();

int key = sqlSession.insert(statementId, obj);

// commit

sqlSession.commit();

return key;

} catch (Exception e) {

sqlSession.rollback();

e.printStackTrace();

} finally {

SqlsessionUtil.closeSession(sqlSession);

}

return 0;

}

测试类

@Test

public void add() throws Exception {

Long start = System.currentTimeMillis();

for(int i=0;i<1000;i++){

Customer customer = new Customer();

customer.setName("普通一条条插入 "+ i);

customer.setAge(15);

customer.setCeroNo("000000000000"+ i);

customer.setCeroType(2);

customer.setSex(1);

int result = customerDao.add(customer);

}

System.out.println("耗时 : "+(System.currentTimeMillis() - start));

}

@Test

public void batchInsert() throws Exception {

Map param = new HashMap();

List list = new ArrayList();

for(int i=0;i<1000;i++){

Customer customer = new Customer();

customer.setName("批量插入" + i);

customer.setAge(15);

customer.setCeroNo("111111111111"+i);

customer.setCeroType(2);

customer.setSex(1);

list.add(customer);

}

param.put("list",list);

Long start = System.currentTimeMillis();

int result = customerDao.batchInsert(param);

System.out.println("耗时 : "+(System.currentTimeMillis() - start));

}

两种都进行插入1000条测试

由于我没有用连接池等等原因,在插入了700多条的时候 junit直接挂了,

Cause: org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object.

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:

Data source rejected establishment of connection,  message from server: "Too many connections"

数据库插入结果:

但是第二种仅仅用了2秒多就ok了。可见这种效率很高。

数据库结果

这里写了两个,其实第一种仅仅是做对比效率用。

批量新增数据记录完毕。

---------------------

作者:第一小菜鸟

来源:CSDN

原文:https://blog.csdn.net/xu1916659422/article/details/77971867

版权声明:本文为博主原创文章,转载请附上博文链接!

c mysql批量添加数据类型_mybatis学习之路----mysql批量新增数据相关推荐

  1. Mysql DBA 高级运维学习之路-mysql数据库入门知识

    1.MySQL数据库介绍 MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放在不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样设计增加了MySQL ...

  2. mysql 浮点数 字节_数据库学习笔记之MySQL(02)

    目录 01. 数据表的组成 02. 数据表创建的前提 03. 数据表的创建语法规范 04. MySQL中的数据类型 05. 数值型包含哪些 06. 字符串类型 07. 日期时间类型 正文 01. 数据 ...

  3. 批量添加后缀_掌握这 6 个批量处理技巧,少做 80% 的无用功!

    记得点击蓝字关注我们哦! 最近不少小伙伴们反映,在表格处理大量数据时,陷入了低效重复性的工作困境中,浪费了不少时间~ 既然如此,那我就整理了一份表格「批量处理」的快捷键,供大家学习. 01一键批量求和 ...

  4. mysql里添加不了中文_为什么MySQL不能添加中文

    我的MYSQL的编码配置是没有什么问题的!..但是当我在WEB程序中往MySQL中添加数据时他就是会报错!在浏览器中的错误是: org.springframework.jdbc.Uncategoriz ...

  5. mysql运维高级_Mysql DBA 高级运维学习之路-mysql建表语句及表知识

    1.创建表 1.1 建表的基本命令语法 create table( , --- ) 1.2 创建student表 (1)在linzhongniao库中创建student表 mysql> use ...

  6. mysql类似的数据库_MemSQL学习笔记-类似MySQL的数据库

    http://gigaom.com/cloud/ex-facebookers-launch-memsql-to-make-your-database-fly/ -- 多主-从 http://www.m ...

  7. 软件测试 学习之路 MYSQL安装

    安装环境:win10 1.下载安装包 mysql8.0.16 windows .zip下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql- ...

  8. 不是mysql常用的数据类型_6.下列( )不是MySQL常用的数据类型。

    [单选题]3.创建数据表时,使用( )语句. [论述题]请按照要求提交"数据清洗练习题",清洗后的excel文档 要求 1.文字替换为数字 2.每一列有且只有一个信息 3.降低数据 ...

  9. 《MySQL实战45讲》——学习笔记01-03 “MySQL基本架构、日志系统、事务隔离“

    最近有新闻说"丁奇"炒股失败欠债,赶紧去极客时间买了他的<MySQL 实战 45 讲>以防下架,顺带重新系统的复习下MYSQL相关知识,记录下学习笔记: 本篇介绍: M ...

最新文章

  1. php查询记录是否存在,php – 插入查询检查是否存在记录 – 如果不存在,插入它...
  2. CSS的表白:七夕巧克力心
  3. java常考设计模式_java笔试常考的几种设计模式
  4. postman--安装及Interceptor插件
  5. Php的https方法,php获取https协议内容的两种方法
  6. 【Andorid X 项目笔记】禁用ListView的Fling功能(1)
  7. ExtJS4之helloworld
  8. bzoj 1492: [NOI2007]货币兑换Cash
  9. Python爬虫入门教程 15-100 石家庄政民互动数据爬取
  10. 在Mybatis的collection标签中获取以,分隔的id字符串
  11. [转载] Python Numpy
  12. ceph:如何处理rados --striper上传失败的对象
  13. 51NOD - 1381 1381 硬币游戏【思维+数学期望】
  14. python 获取qq群成员信息_Python获取统计自己的qq群成员信息的方法
  15. 虚拟服务器io,IO虚拟化:虚拟直接连接VMDc技术解析
  16. 无刷直流电机与永磁同步电机比较
  17. Python绘图库:Matplotlib入门教程
  18. cad打开卡死_求助,cad 一打开就卡死,完全没办法运行,怎么处理
  19. Invalidate()详解
  20. SSD6 exercise1 解题思路

热门文章

  1. 希尔伯特曲线的绘制c语言,用四叉树和希尔伯特曲线做空间索引
  2. oracle游标指针移动时机,oracle--游标(cursor)
  3. 彻底关掉win10自动更新_win10系统explorer.exe错误的解决教程
  4. 大华web对接文档_分分钟了解Web接口测试
  5. 百度AICA再添57位“首席AI架构师”,人工智能与产业场景结合愈发深入
  6. 求职中最吃香的编程语言:JavaScript、Java 和 Python
  7. 百度开发者中心全新升级 | 文末六一送福利
  8. mysql使用bka_MySQL Batched Key Access (BKA)原理和设置使用方法举例
  9. android中注册的账号密码储存在,Android中使用SharedPreferences完成记住账号密码的功能...
  10. android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码