c mysql批量添加数据类型_mybatis学习之路----mysql批量新增数据
原文: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批量新增数据相关推荐
- Mysql DBA 高级运维学习之路-mysql数据库入门知识
1.MySQL数据库介绍 MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放在不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样设计增加了MySQL ...
- mysql 浮点数 字节_数据库学习笔记之MySQL(02)
目录 01. 数据表的组成 02. 数据表创建的前提 03. 数据表的创建语法规范 04. MySQL中的数据类型 05. 数值型包含哪些 06. 字符串类型 07. 日期时间类型 正文 01. 数据 ...
- 批量添加后缀_掌握这 6 个批量处理技巧,少做 80% 的无用功!
记得点击蓝字关注我们哦! 最近不少小伙伴们反映,在表格处理大量数据时,陷入了低效重复性的工作困境中,浪费了不少时间~ 既然如此,那我就整理了一份表格「批量处理」的快捷键,供大家学习. 01一键批量求和 ...
- mysql里添加不了中文_为什么MySQL不能添加中文
我的MYSQL的编码配置是没有什么问题的!..但是当我在WEB程序中往MySQL中添加数据时他就是会报错!在浏览器中的错误是: org.springframework.jdbc.Uncategoriz ...
- mysql运维高级_Mysql DBA 高级运维学习之路-mysql建表语句及表知识
1.创建表 1.1 建表的基本命令语法 create table( , --- ) 1.2 创建student表 (1)在linzhongniao库中创建student表 mysql> use ...
- mysql类似的数据库_MemSQL学习笔记-类似MySQL的数据库
http://gigaom.com/cloud/ex-facebookers-launch-memsql-to-make-your-database-fly/ -- 多主-从 http://www.m ...
- 软件测试 学习之路 MYSQL安装
安装环境:win10 1.下载安装包 mysql8.0.16 windows .zip下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql- ...
- 不是mysql常用的数据类型_6.下列( )不是MySQL常用的数据类型。
[单选题]3.创建数据表时,使用( )语句. [论述题]请按照要求提交"数据清洗练习题",清洗后的excel文档 要求 1.文字替换为数字 2.每一列有且只有一个信息 3.降低数据 ...
- 《MySQL实战45讲》——学习笔记01-03 “MySQL基本架构、日志系统、事务隔离“
最近有新闻说"丁奇"炒股失败欠债,赶紧去极客时间买了他的<MySQL 实战 45 讲>以防下架,顺带重新系统的复习下MYSQL相关知识,记录下学习笔记: 本篇介绍: M ...
最新文章
- php查询记录是否存在,php – 插入查询检查是否存在记录 – 如果不存在,插入它...
- CSS的表白:七夕巧克力心
- java常考设计模式_java笔试常考的几种设计模式
- postman--安装及Interceptor插件
- Php的https方法,php获取https协议内容的两种方法
- 【Andorid X 项目笔记】禁用ListView的Fling功能(1)
- ExtJS4之helloworld
- bzoj 1492: [NOI2007]货币兑换Cash
- Python爬虫入门教程 15-100 石家庄政民互动数据爬取
- 在Mybatis的collection标签中获取以,分隔的id字符串
- [转载] Python Numpy
- ceph:如何处理rados --striper上传失败的对象
- 51NOD - 1381 1381 硬币游戏【思维+数学期望】
- python 获取qq群成员信息_Python获取统计自己的qq群成员信息的方法
- 虚拟服务器io,IO虚拟化:虚拟直接连接VMDc技术解析
- 无刷直流电机与永磁同步电机比较
- Python绘图库:Matplotlib入门教程
- cad打开卡死_求助,cad 一打开就卡死,完全没办法运行,怎么处理
- Invalidate()详解
- SSD6 exercise1 解题思路
热门文章
- 希尔伯特曲线的绘制c语言,用四叉树和希尔伯特曲线做空间索引
- oracle游标指针移动时机,oracle--游标(cursor)
- 彻底关掉win10自动更新_win10系统explorer.exe错误的解决教程
- 大华web对接文档_分分钟了解Web接口测试
- 百度AICA再添57位“首席AI架构师”,人工智能与产业场景结合愈发深入
- 求职中最吃香的编程语言:JavaScript、Java 和 Python
- 百度开发者中心全新升级 | 文末六一送福利
- mysql使用bka_MySQL Batched Key Access (BKA)原理和设置使用方法举例
- android中注册的账号密码储存在,Android中使用SharedPreferences完成记住账号密码的功能...
- android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码