国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot JdbcTemplate批量操作的示例代碼

SpringBoot JdbcTemplate批量操作的示例代碼

2021-04-23 11:20柒''''s Java教程

本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

在我們做后端服務dao層開發(fā),特別是大數(shù)據(jù)批量插入的時候,這時候普通的orm框架(mybatis、hibernate、jpa)就無法滿足程序對性能的要求了。當然我們又不可能使用原生的jdbc進行操作,那樣盡管效率會高,但是復雜度會上升。

綜合考慮我們使用spring中的jdbctemplate和具名參數(shù)namedparameterjdbctemplate來進行批量操作。

改造前

在開始講解之前,我們首先來看下之前的jpa是如何批量操作的。

實體類user:

?
1
2
3
4
5
6
7
public class appstudent {
 private integer id;
 private integer classid;
 private string name;
 private integer age;
 //偽代碼、省略構造和get、set方法
}

dynamicquery偽代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@repository
public class dynamicqueryimpl implements dynamicquery {
 
 @persistencecontext
 private entitymanager em;
 
 public entitymanager getentitymanager() {
  return em;
 }
 //其實就是for循環(huán)、使用entitymanager的persist方法循環(huán)保存而已
 @override
 public <t> void savelist(list<t> resultlist) {
  for (int i = 0; i < resultlist.size(); i++) {
   t t = resultlist.get(i);
   em.persist(t);
  }
 }
}

改造后

jdbctemplate

jdbctemplate提供的主要方法:

  1. execute方法:可以用于執(zhí)行任何sql語句,一般用于執(zhí)行ddl語句;
  2. update方法及batchupdate方法:update方法用于執(zhí)行新增、修改、刪除等語句;batchupdate方法用于執(zhí)行批處理相關語句;
  3. query方法及queryforxxx方法:用于執(zhí)行查詢相關語句;
  4. call方法:用于執(zhí)行存儲過程、函數(shù)相關語句。

我們只需要在使用jdbctemplate類中使用@autowired進行注入即可:

?
1
2
@autowired
private jdbctemplate jdbctemplate;

批量插入操作:

?
1
2
3
4
5
6
7
8
public void batchsave(){
  list<object[]> batchargs=new arraylist<object[]>();
  batchargs.add(new object[]{1,"小明",21});
  batchargs.add(new object[]{2,"小紅",22});
  batchargs.add(new object[]{3,"露西",23});
  string sql = "insert into user (username,password) values (?,?)";
  jdbctemplate.batchupdate(sql, batchargs);
}

以上基本實現(xiàn)了批量插入功能,但是當數(shù)據(jù)庫字段比較多的時候,再以?占位符的形式編碼的話就可能不是那么好一 一對應了,這里spring還提供了simplejdbctemplate(spring3.1+ 以后被標記為過時,到spring 4.3則被完全移除,后面這個完全能滿足需求)和namedparameterjdbctemplate模板引擎。

namedparameterjdbctemplate

相信使用過hibernate的同學都知道,hql中可以使用?或者:*的方式在外部配置查詢參數(shù)。在 spring jdbc 框架中,也提供了一種綁定 sql 參數(shù)的方式,使用具名參數(shù)(named parameter)。

我們只需要在使用namedparameterjdbctemplate類中使用@autowired進行注入即可:

?
1
2
@autowired
private namedparameterjdbctemplate namedparameterjdbctemplate;

批量插入操作:

?
1
2
3
4
5
6
7
8
9
10
11
public void batchsave(){
 list<user> list = new arraylist<user>();
 //新增用戶
 list.add(new appstudent(1,"張三",21));
 list.add(new appstudent(1,"李四",22));
 list.add(new appstudent(1,"王二麻子",23));
 //批量轉數(shù)組
 sqlparametersource[] beansources = sqlparametersourceutils.createbatch(list.toarray());
 string sql = "insert into app_student(class_id,name,age) values (:classid,:name,:age)";
 namedparameterjdbctemplate.batchupdate(sql, beansources);
}

最后我們使用system.currenttimemillis()來對比打印一下具體改造前后的執(zhí)行時間。

?
1
2
3
4
long start = system.currenttimemillis();
//改造前后代碼、自行補充
long end = system.currenttimemillis();
system.out.println("花費時間:"+(end-start));

快肯定是快了,至于快多少,那就要根據(jù)數(shù)據(jù)量以及機器配置來做相關的對比了。

項目源碼:https://gitee.com/52itstyle/spring-data-jpa

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.52itstyle.com/archives/2675/

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品一区二区不卡 | 亚洲视频综合网 | 久久综合888 | 波多野结衣一区二区三区中文字幕 | av在线免费观看一区二区 | 日本一二三视频 | 亚洲一区在线视频 | www.亚洲成人| 精品一区二区免费视频视频 | 中文字幕日本一区二区 | 欧美日韩在线视频观看 | 国产午夜精品一区二区三区嫩草 | 日韩欧美国产精品 | 免费一级片 | 一二三四区视频在线观看 | 欧美精品福利 | 国产日韩精品一区 | 国产免费一区二区三区 | 欧美日韩第一页 | 午夜精品一区二区三区在线视频 | 日本三级精品视频 | 99re在线精品 | 午夜高清视频 | 日本欧美在线观看 | 中文国产在线观看 | 国产在线小视频 | 日韩国产一区二区 | 国产成人精品免高潮在线观看 | 国产在线第一页 | 精品久久久av | 九九热精品在线 | 国产精品视频在线播放 | 可以免费看黄的网站 | 欧美日韩高清在线 | 精品www| 精品一区二区久久久久久久网站 | 亚洲大奶网 | 国产高清在线精品一区二区三区 | 国产最新视频在线 | 伊人久久乐 | 国产一级特黄 |