日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2024/10/8 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c mysql批量添加数据类型_mybatis学习之路----mysql批量新增数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

接下來(lái)兩節(jié)要探討的是批量插入和批量更新,因?yàn)檫@兩種操作在企業(yè)中也經(jīng)常用到。

mysql新增語(yǔ)句

insert into 表名(字段,字段。。。) values ( 值,值 。。。);此種適合單條插入。

批量插入,

一種可以在代碼中循環(huán)著執(zhí)行上面的語(yǔ)句,但是這種效率太差,下面會(huì)有對(duì)比,看看它有多差。

另一種,可以用mysql支持的批量插入語(yǔ)句,

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

這種方式相比起來(lái),更高效。

下面開(kāi)始來(lái)實(shí)現(xiàn)。

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})

實(shí)體model對(duì)象

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);

實(shí)現(xiàn)

/**

* 新增數(shù)據(jù)

* @param customer

* @return

*/

public int add(Customer customer) {

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

}

/**

* 批量插入數(shù)據(jù)

* @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;

}

測(cè)試類

@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("耗時(shí) : "+(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("耗時(shí) : "+(System.currentTimeMillis() - start));

}

兩種都進(jìn)行插入1000條測(cè)試

由于我沒(méi)有用連接池等等原因,在插入了700多條的時(shí)候 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"

數(shù)據(jù)庫(kù)插入結(jié)果:

但是第二種僅僅用了2秒多就ok了。可見(jiàn)這種效率很高。

數(shù)據(jù)庫(kù)結(jié)果

這里寫(xiě)了兩個(gè),其實(shí)第一種僅僅是做對(duì)比效率用。

批量新增數(shù)據(jù)記錄完畢。

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

作者:第一小菜鳥(niǎo)

來(lái)源:CSDN

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

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

總結(jié)

以上是生活随笔為你收集整理的c mysql批量添加数据类型_mybatis学习之路----mysql批量新增数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。