亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

SpringBoot JdbcTemplate批量操作的示例代碼

2024-07-14 08:40:16
字體:
來源:轉載
供稿:網友

前言

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

綜合考慮我們使用Spring中的JdbcTemplate和具名參數namedParameterJdbcTemplate來進行批量操作。

改造前

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

實體類User:

public class AppStudent { private Integer id; private Integer classId; private String name; private Integer age; //偽代碼、省略構造和get、set方法}

DynamicQuery偽代碼:

@Repositorypublic class DynamicQueryImpl implements DynamicQuery { @PersistenceContext private EntityManager em; public EntityManager getEntityManager() {  return em; } //其實就是for循環、使用EntityManager的persist方法循環保存而已 @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方法:可以用于執行任何SQL語句,一般用于執行DDL語句;
  2. update方法及batchUpdate方法:update方法用于執行新增、修改、刪除等語句;batchUpdate方法用于執行批處理相關語句;
  3. query方法及queryForXXX方法:用于執行查詢相關語句;
  4. call方法:用于執行存儲過程、函數相關語句。

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

@Autowiredprivate JdbcTemplate jdbcTemplate;

批量插入操作:

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

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

NamedParameterJdbcTemplate

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

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

@Autowiredprivate NamedParameterJdbcTemplate namedParameterJdbcTemplate;

批量插入操作:

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)); //批量轉數組 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()來對比打印一下具體改造前后的執行時間。

long start = System.currentTimeMillis();//改造前后代碼、自行補充long end = System.currentTimeMillis();System.out.println("花費時間:"+(end-start));

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久| 亚洲xxxx妇黄裸体| 成人福利网站在线观看11| 亚洲精品久久久久久下一站| 欧美在线视频免费观看| 一区二区三区视频在线| 日韩av理论片| 欧美国产日韩一区二区| 永久免费看mv网站入口亚洲| 日韩免费在线看| 91久久精品国产91久久性色| 国产伦精品一区二区三区精品视频| 国产视频亚洲视频| 精品毛片三在线观看| 国产成人一区二区三区小说| 国产精品色悠悠| 国产精品老牛影院在线观看| 久久久99久久精品女同性| 欧美一区二区三区图| 亚洲**2019国产| 欧美日韩国产限制| 亚洲第一精品福利| 欧美洲成人男女午夜视频| 日韩欧美国产一区二区| 亚洲人在线视频| 亚洲最大福利网| 亚洲欧美综合图区| 95av在线视频| 久久久亚洲国产天美传媒修理工| 茄子视频成人在线| 国产在线视频不卡| 亚洲午夜av久久乱码| 精品久久久中文| 中文字幕亚洲一区| 欧美激情一级精品国产| 7m精品福利视频导航| 成人国产精品色哟哟| 国产精品久久久久久av| 国产成人精品一区二区| 国外日韩电影在线观看| 2019亚洲男人天堂| 亚洲第一二三四五区| 亚州精品天堂中文字幕| 成人国产在线视频| 欧美中文字幕精品| 国产成人精品久久二区二区91| 黑人精品xxx一区一二区| 日韩电影中文字幕在线观看| 亚洲人成欧美中文字幕| 91精品国产高清久久久久久91| 亚洲图片欧洲图片av| 日韩欧美在线网址| 欧美电影免费看| 精品在线小视频| 久久国内精品一国内精品| 欧美性xxxx| 欧美成人三级视频网站| 欧美大片大片在线播放| 欧美成年人视频网站欧美| 日韩大陆欧美高清视频区| 中文字幕久久久| 欧美资源在线观看| 美女999久久久精品视频| 国产精品女人久久久久久| 久久久久久久久91| 国产一区二区三区三区在线观看| 国产成人精品免高潮在线观看| 亚洲欧美国产一区二区三区| 国产精品国产福利国产秒拍| 亚洲欧美成人在线| 91久久精品国产91久久| 欧美人成在线视频| 日韩欧美在线视频日韩欧美在线视频| 97精品国产97久久久久久春色| 久久久99免费视频| 欧美午夜片欧美片在线观看| 欧美日韩国产中字| 91国产精品电影| 国产欧美日韩亚洲精品| 2019中文在线观看| 国产美女主播一区| 成人春色激情网| 久久久91精品国产一区不卡| 日本精品视频在线播放| 亚洲国产日韩欧美在线图片| 97在线精品国自产拍中文| 日韩成人中文字幕| 亚洲精品网站在线播放gif| 亚洲精品永久免费| 午夜免费在线观看精品视频| 国产一区二区三区久久精品| 亚洲国产91色在线| 亚洲国产天堂久久综合网| 欧美精品中文字幕一区| 亚洲精品狠狠操| 久久成人免费视频| 在线观看免费高清视频97| 欧美激情一区二区三区成人| 欧美激情久久久久| 亚洲激情视频在线| 久久夜精品va视频免费观看| 红桃av永久久久| 播播国产欧美激情| 日韩h在线观看| 欧美性xxxx18| 久久久91精品国产| 久久久久久一区二区三区| 国产精品久久久久免费a∨| 国产精品电影网站| 国产精品第二页| 九九九热精品免费视频观看网站| 日韩av在线网址| 91在线国产电影| 国产精品精品国产| 精品中文字幕久久久久久| 国产91色在线播放| 亚洲香蕉成人av网站在线观看| 久久精品视频一| 久久久精品一区二区三区| 色青青草原桃花久久综合| 成人精品福利视频| 日韩av成人在线观看| 亚洲国产精品热久久| 欧美在线日韩在线| 精品国产一区二区三区久久狼黑人| 日韩视频精品在线| 91免费看片在线| 国产亚洲欧美一区| 国产精品视频yy9099| 久久久久久美女| 欧美日韩激情视频8区| 日韩视频―中文字幕| 久久精品久久久久电影| 国产黑人绿帽在线第一区| 国产精品视频一区二区三区四| 中文字幕亚洲专区| 国产日韩欧美黄色| 91精品国产高清久久久久久91| 久久中文字幕在线| 欧美高清第一页| 久久久精品一区| 欧美日韩亚洲一区二| 上原亚衣av一区二区三区| 国产精品日韩电影| 亚洲欧美国产视频| 欧美性69xxxx肥| 亚洲美女中文字幕| 美女视频久久黄| 日韩网站免费观看高清| 欧美大尺度在线观看| 亚洲欧美在线一区二区| 亚洲热线99精品视频| 91美女片黄在线观看游戏| 国产成人激情小视频| 国产亚洲精品久久久久动| 欧美一区二区三区四区在线| 国产精品免费久久久久久| 欧美www视频在线观看| 亚洲男人天堂九九视频| 欧美激情欧美狂野欧美精品| 欧美成人午夜免费视在线看片| 在线观看精品国产视频| 久久九九国产精品怡红院| 国产精品h片在线播放|