1. 程式人生 > >JDBCTemplate---方法介紹和簡單示例

JDBCTemplate---方法介紹和簡單示例

當sql等查詢方式不能滿足效能或靈活性的要求,必須使用SQL時,大家有三種選擇:

第一、使用Hibernate 的sql 查詢函式,將查詢結果物件轉為Entity物件。

第二、使用Hibernate Session的getConnection 獲得JDBC Connection,然後進行純JDBC API操作;

第三、選擇把Spring的JDBCTemplate作為一種很不錯的JDBC Utils來使用。

[java] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. /*使用jdbcTemplate查詢資料的時候可以使用queryForXXX等方法。下面我們就一一解析一下:*/
  2. 1、jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong()    
  3. //使用queryForInt返回user表中的記錄數量,queryForInt搭配這樣的sql可以在分頁的時候計算總記錄數  
  4. jdbcTemplate.queryForInt("select count(*) from user");    
  5. 2、jdbcTemplate.queryForObject()    
  6. //本質上和queryForInt相同,只是可以返回不同的物件,例如返回一個String物件  
  7. String name = (String) jdbcTemplate.queryForObject(  --3
    個引數: 1、sql 2、要傳遞的引數陣列 3、返回來的物件class
  8. "SELECT name FROM USER WHERE id = ?",      
  9. new Object[] {id},      
  10. java.lang.String.class);    
  11. 3、jdbcTemplate.queryForList(???)    
  12. //返回一個裝有map的list,每一個map是一條記錄,map裡面的key是欄位名  
  13. List rows = jdbcTemplate.queryForList("SELECT * FROM user");  //得到裝有map的list  
  14. for
    (int i=0;i<rows.size();i++){                   //遍歷  
  15. Map userMap=rows.get(i);    
  16. System.out.println(userMap.get("id"));      
  17. System.out.println(userMap.get("name"));      
  18. System.out.println(userMap.get("age"));    
  19. }    
  20. 4、jdbcTemplate.queryForMap(SQL)    
  21. //這個查詢只能是查詢一條記錄的查詢,返回一個map,key的值是column的值  
  22. Map map = jdbcTemplate.queryForMap("select count(*) as keyval from user");    
  23. map.get("keyval")    
  24. 5、jdbcTemplate.queryForRowSet(???)    
  25. //返回一個RowSet   然後呼叫.getString或者getInt等去取值  
  26. 6、jdbc1.query(sql, new RowCallbackHandler()    
  27. //返回一個ResultSet物件, processRow有自動迴圈的機制,它會自動執行processRow中的語句直到  
  28. //rs的size執行完了為止。我們可以在這其中用list完成物件的轉移,只不過list要用final來修飾  
  29. jdbc1.query(sql, new RowCallbackHandler() { //editing  
  30.             publicvoid processRow(ResultSet rs) throws SQLException {    
  31.         VideoSearch vs = new VideoSearch();    
  32.         vs.setRECORDINGFILENAME(rs.getString("RECORDINGFILENAME"));    
  33.         vs.setCALLID(rs.getString("CALLID"));    
  34.         list.add(vs);    
  35.     }    
  36.     }    
  37. 7.更新操作  
  38. //執行sql語句,無返回執,可用於插入等操作
  39. jdbcTemplate.execute(sql);  
  40. //更新操作,返回受影響的行數
  41. jdbcTemplate.update(strSql.toString());  
  42. //執行批量更新,引數為string陣列
  43. jdbcTemplate.batchUpdate(sql);  
  44. //更新,args為物件陣列
  45. jdbcTemplate.update(strSql, args);  
  46. /* 
  47. 說明:   
  48. JDBCTemplate的使用方法:   
  49. 在ApplicationContext.xml中定義一個jdbcTemplate的節點,使用POJO注入,獲得注入後可以執行操作   
  50. 不需要繼承什麼基類   
  51. */
  52. <bean id="jdbcTemplate"
  53. class="org.springframework.jdbc.core.JdbcTemplate">                
  54.       <property name="dataSource" ref="dataSource"/>             
  55. </bean>    
  56. SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, params);    
  57. /* 
  58. jdbcTemplate有很多的ORM化回撥操作將返回結果轉為物件列表,   
  59. 但很多時候還是需要返回ResultSet,Spring有提供一個類似ResultSet的,實現JDBC3.0 RowSet介面的Spring SqlRowSet   
  60. 注意   
  61. jdbcTemplate儘量只執行查詢操作,莫要進行更新,否則會破壞Hibernate的二級快取體系  
  62. */

以下轉載。

1. Spring的基本概念

       Spring框架核心的思想就是建立一個Java物件的大工廠,使用者只要給工廠一個指令,工廠就能將使用者需要的物件根據配置檔案組裝好返還給使用者。使用者需要做的許多工作則可以寫成簡單的配置檔案。

2. 醜陋的JDBC程式碼

01 Connection con = null;
02 PreparedStatement pStmt = null;
03 ResultSet rs = null;
04 try {

相關推薦

JDBCTemplate---方法介紹簡單示例

當sql等查詢方式不能滿足效能或靈活性的要求,必須使用SQL時,大家有三種選擇: 第一、使用Hibernate 的sql 查詢函式,將查詢結果物件轉為Entity物件。 第二、使用Hibernate Session的getConnection 獲得JDBC

Java ArrayList詳細介紹使用示例

zab tco random class strong art vector 導致 執行 對ArrayList的整體認識 ArrayList是一個數組隊列,相當於動態數組。與Java中的數組相比,它的容量能動態增長。它繼承了AbstractList,實現了List,Rand

Java HashMap詳細介紹使用示例(正在整理學習中)

trac blog null https 學習 ava abs 同步 .com 對HashMap的整體認識 HashMap是一個散列表,它存儲的內容是鍵值對(key-value)映射。 HashMap繼承於AbstractMap,實現了Map、Cloneable、jav

Polly的多種彈性策略介紹簡單使用

故障 廣泛 forever 影響 結合 ssim 封裝 n) csharp 什麽是Polly? Polly是一個.NET彈性和瞬態故障處理庫.允許我們以非常順暢和線程安全的方式來執行諸如行重試,斷路,超時,故障恢復等策略。 Polly項目地址:https://github.

[iOS高階]Xcode中的Target介紹簡單使用

        本文地址:http://blog.csdn.net/zhaoyabei/article/details/45396913   轉載註明出處

工廠方法模式簡單工廠模式的區別

簡單工廠模式 就我們的計算器例子來說,簡單工廠模式的思想就是,建立一個運算類,建立一個簡單工廠類。 運算類派生加法類、減法類、乘法類...... 簡單工廠類主要是根據傳入的符號字串,做相應的條件判斷來建立相應的運算物件。 當我們需要增加運算功能的時候,需要在運算類中派生相應的運運

STL 之 priority_queue 的介紹簡單示例

priority_queue 優先佇列,其底層是用堆來實現的。在優先佇列中,隊首元素一定是當前佇列中優先順序最高的那一個。 在優先佇列中,沒有 front() 函式與 back() 函式,而只能通過 top() 函式來訪問隊首元素(也可稱為堆頂元素),也就是優 先級最高的元素。基本操作有

Dubbox介紹簡單使用

Dubbox介紹和簡單使用 Dubbox定義: 1、dubbox是dubbo的一個版本,它是針對於SOA架構的系統,實現系統表現層和服務層之間的關係調用。 2、dubbox使用rpc協議進行遠端呼叫,直接使用socket通訊,傳輸效率高。 而且它可以計算出系統之間的呼叫關係,可以

Python中遍歷pandas資料的幾種方法介紹效率對比說明

前言 Pandas是python的一個數據分析包,提供了大量的快速便捷處理資料的函式和方法。其中Pandas定義了Series 和 DataFrame兩種資料型別,這使資料操作變得更簡單。Series 是一種一維的資料結構,類似於將列表資料值與索引值相結合。DataFrame 是一種二維

servlet 介紹簡單使用

1,servle介紹: html+css+js Servlet:用來開發動態web的技術 屬於javaee規範 【1】,javaEE Servers建立專案      a,new Dynamic Web Project  &nbs

js--Object.prototype下的方法介紹使用

hasOwnProperty   hasOwnProperty() 方法會返回一個布林值,指示物件自身屬性中是否具有指定的屬性      不考慮繼承裡的屬性。 o = new Object();

Mongodb的介紹簡單使用

Mongodb的介紹和簡單使用 ①Mongodb的介紹 MongoDB (名稱來自「humongous (巨大無比的)」), 是一個可擴充套件的高效能,開源,模式自由,面向文件的NoSQL,基於 分散式 檔案儲存,由 C++ 語言編寫,設計之初旨在為 WEB 應用提供可擴充套件的高效

Java 工廠方法模式的簡單示例

通過 style java 實例 對象 clas implement 屬於 決定 工廠方法模式:也叫工廠模式,屬於類創建型模式,工廠父類(接口)負責定義產品對象的公共接口,而子類工廠則負責創建具體的產品對象。 目的:是為了把產品的實例化操作延遲到子類工廠中完成,通過工廠子類

SSH入門Struts2篇(1)——Struts2的配置簡單示例

1.下載struts2.3並把核心jar包新增到WEB-INF/lib目錄下 struts2.3下載地址 核心jar包指的是以下八個,在這個簡單的例子裡我們暫時只需要這八個 2.struts的表單處理流程 對於一般的web應用而言,表單提交之後交給servl

【轉】理解JMX之介紹簡單使用

原文連結:https://blog.csdn.net/lmy86263/article/details/71037316  近期在專案上需要新增一些功能,想把一個開源工程整合進來,雖說是整合,但是覺得跟開發有查不了多少,要讓這個開源工程的編碼風格和設計方式與我們的工程保持一

Flume的介紹簡單操作

Flume是什麼 Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。 F

Hibernate(1)Hibernate簡介簡單示例,瞭解Hibernate事務回滾用法

1 Hibernate簡介 Hibernate是一個orm(object relation mapping 物件關係對映)框架,處於專案的持久層,也叫持久層框架(持久層框架還有ojb等)。 Hibernate本質就是對JDBC進行了輕量級的封裝。 2

flume的介紹簡單安裝

nbsp 壓縮 容錯能力 故障轉移 apach 有效 color 相關 .html 一:介紹 (1)日誌采集系統 (2)是一種分布式,可靠且可用的服務,用於有效地收集,聚合和移動大量日誌數據。 (3)具有基於流數據流的簡單靈活的架構。 (4)具有可靠的可靠性機制和許多故障轉

Netty專欄 (一)——— Netty初步介紹簡單Demo

Netty初步介紹和簡單Demo @author 魯偉林 記錄《Netty 實戰》中各章節學習過程,寫下一些自己的思考和總結,幫助使用Netty框架的開發技術人員們,能夠有所得,避免踩坑。 本部落格目錄結構將嚴格按照書本《Netty 實戰》,省略與Netty無關的內容,可能

Yii2.0框架的介紹簡單部署

Yii是什麼?         高效能,基於元件 Yii適合做什麼?         大型應用,門戶,社群,OMS,電子商務等 Yii與其他框架相比         1:和其他PHP框架相比,Yii實現了MVC(Model-View-Controller)設計模式並基於該