激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - WEB服務器 - Apache Commons DbUtils工具包使用介紹

Apache Commons DbUtils工具包使用介紹

2021-10-22 15:44服務器知識網 WEB服務器

這篇文章主要介紹了Apache Commons DbUtils工具包使用介紹,本文介紹了DBUtils是什么東西、熟悉DBUtils的一些問題、API介紹等內容,需要的朋友可以參考下

一、介紹

DBUtils是個小巧的JDBC輕量級封裝的工具包,其最核心的特性是在JDBC的基礎上做了一層封裝,主要是對結果集的封裝,可以直接將查詢出來的結果集封裝成JavaBean,旨在簡化JDBC代碼混亂與重復。

JDBC代碼開發,存在很多難點:
1)操作過程復雜,代碼操作一個模式,大量的重復。
2)結果集難以處理。
3)到處都強制檢查SQLException,影響代碼的美觀和可讀性。

二、熟悉DBUtils

在使用DBUtils之前,應該注意一些問題:
1)DBUtils是JDBC的簡單封裝,可以和JDBC混合使用。
2)DBUtils對結果集自動封裝為JavaBean是有著苛刻要求的:
必須滿足JavaBean的規范;
其次Bean的getter與setter方法的名字與結果集的列名必須一一對應;
不要求JavaBean的私有成員與表結果集列名一一對應。
3)DBUtils可以將結果集封裝為各種類型
主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>,數組/List<數組>,列/List<列>,這些類型。

對于Map<Map>的類型使用KeyedHandler作為結果集處理器,內層的Map是“列名-值"對,外層的Map是“主鍵-內層Map的引用”,但此處的主鍵不一定就是數據庫的主鍵,可以隨意指定。
4)DBUtils執行插入操作的時候,無法返回自增主鍵,這是一個很嚴重的問題,當然不能怪DBUtils,可以通過變通的方法來實現,比如在MySQL中,執行完了一個插入SQL后,接著執行SELECT LAST_INSERT_ID()語句,就可以獲取到自增主鍵。
5)DBUtils的性能和JDBC性能是一樣,測試過程中沒發現性能損失,擁有了很高性能的同時,而不失JDBC的靈活性。
6)對于JavaBean的成員類型定義,有一條原則那就是:盡可能使用包裝類型,而不要使用基本類型。

三、API介紹

1、org.apache.commons.dbutils包
DbUtils:一個為簡化JDBC操作的小類庫
AbstractQueryRunner:是抽象類,QueryRunner和AsyncQueryRunner類的基類。
AsyncQueryRunner:可插拔的方式執行SQL查詢,處理結果集。是線程安全的類。
BaseResultSetHandler:把結果集轉換成其它對象的擴展。
BeanProcessor:BeanProcessor匹配列名到Bean屬性名,并轉換結果集列到Bean對象的屬性中。
Dbutils:一個JDBC輔助工具集合。
GenerousBeanProcessor:提供了從數據庫列名到JavaBean屬性之間的智能匹配。
ProxyFactory:產生JDBC接口的代理實現。
QueryLoader:屬性文件加載器,主要用于加載屬性文件中的SQL到內存中。
QueryRunner:使用可插拔的策略執行SQL查詢并處理結果集。
ResultSetHandler:把ResultSet轉換為別的對象的工具。
ResultSetIterator:包裝結果集為一個迭代器。
RowProcessor:將ResultSet行轉換為別的對象的工具。

2、org.apache.commons.dbutils.handlers包
AbstractKeyedHandler:KeyedHandler的抽象類。
AbstractListHandler:簡化ResultSetHandler類開發的抽象類,把結果集轉換成List。
ArrayHandler:把結果集中的第一行數據轉成對象數組。
ArrayListHandler:把結果集中的每一行數據都轉成一個對象數組,再存放到List中。
BeanHandler:將結果集中的第一行數據封裝到一個對應的JavaBean實例中。
BeanListHandler:將結果集中的每一行數據都封裝到一個對應的JavaBean實例中,存放到List里。
BeanMapHandler:實現了Bean返回Map集合。結果集所有的行都會轉換成Bean,并根據指定的Key存儲到Map中。
ColumnListHandler:將結果集中某一列的數據存放到List中。
KeyedHandler:將結果集中的每一行數據都封裝到一個Map里,然后再根據指定的key把每個Map再存放到一個Map里。
MapHandler:將結果集中的第一行數據封裝到一個Map里,key是列名,value就是對應的值。
MapListHandler:將結果集中的每一行數據都封裝到一個Map里,然后再存放到List。
ScalarHandler:將結果集中某一條記錄的其中某一列的數據存成Object。

3、org.apache.commons.dbutils.wrappers包
SqlNullCheckedResultSet:在每個getXXX方法上檢查SQL NULL值的ResultSet包裝類。
StringTrimmedResultSet:刪除結果集中字符串前后空格的ResultSet包裝類。

四、重要類詳述

1、DbUtils類

DbUtils提供如關閉連接、裝載JDBC驅動程序等常規工作的工具類,里面的所有方法都是靜態的。
主要方法如下:
1)public static void close(...) throws SQLException
DbUtils類提供了三個重載的close方法。這些方法檢查所提供的參數是不是NULL,如果為空,就關閉Connection、Statement和ResultSet。
2)public static void closeQuietly(...)
bUtils類提供了四個重載的closeQuietly方法。這一類方法不僅能在Connection、Statement和ResultSet為NULL情況下避免關閉,還能隱藏一些在程序中拋出的SQLEeception。
3)public static void commitAndCloseQuietly(Connection conn)
在連接內提交SQL,然后關閉連接,并且在關閉連接時不拋出SQL異常。
4)public static boolean loadDriver(String driverClassName)
此方法載入并注冊JDBC驅動,如果成功就返回true,失敗返回false。使用該方法,無需捕捉ClassNotFoundException異常。

2、QueryRunner類

QueryRunner類簡化了SQL查詢,它與ResultSetHandler組合在一起使用可完成大多數數據庫操作,能夠大量減少代碼量。
QueryRunner類提供了兩個構造方法
1)默認的構造方法
2)需要一個javax.sql.DataSource來作參數的構造方法。

3、QueryRunner類的主要方法

1)public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException
執行一個查詢操作,在此查詢中,對象數組中的每個元素值被用來作為查詢語句的置換參數。此方法會自行處理PreparedStatement和ResultSet的創建和關閉。
2)public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException
幾乎與第一種方法一樣;唯一的不同在于它不將數據庫連接提供給方法,并且它是從提供給構造方法的數據源(DataSource) 或使用的setDataSource方法中重新獲得Connection。
3)public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException
執行一個不需要置換參數的查詢操作。
4)public int update(Connection conn, String sql, Object[] params) throws SQLException
用來執行一個更新(插入、更新或刪除)操作。
5)public int update(Connection conn, String sql) throws SQLException
用于執行一個不需要置換參數的更新操作。
6)insert插入方法
7)batch批處理方法

延伸 · 閱讀

精彩推薦
  • WEB服務器寶塔面板負載狀態(load average)中的數據代表了什么?

    寶塔面板負載狀態(load average)中的數據代表了什么?

    寶塔面板是現在眾多站長選擇的服務器管理軟件,本文主要講解寶塔面板負載狀態(load average)中的數據代表了什么?有需要的朋友可以參考一下。...

    九天博客5792020-05-23
  • WEB服務器如何將web項目部署到騰訊云服務器

    如何將web項目部署到騰訊云服務器

    如何將Web項目部署到騰訊 云服務器 摘要:本文將詳細介紹如何將Web項目部署到 騰訊云服務器 。包括選擇合適的云服務器實例,配置服務器環境,上傳代碼...

    未知1952023-06-24
  • WEB服務器阿里云服務器部署web項目查看

    阿里云服務器部署web項目查看

    阿里 云服務器 部署web項目查看 隨著互聯網的發展,越來越多的企業開始將自己的業務擴展到線上平臺。為了滿足用戶的需求,企業需要部署自己的網站或...

    未知872023-09-07
  • WEB服務器云服務器安裝多個web網站嗎

    云服務器安裝多個web網站嗎

    云服務器 安裝多個web網站 云服務器是一種基于云計算技術的 虛擬主機 服務,可以提供各種云計算基礎設施和服務。作為一個虛擬主機,云服務器可以用于...

    未知1302023-07-12
  • WEB服務器湖北web云服務器價格

    湖北web云服務器價格

    湖北web 云服務器 價格 近年來,隨著互聯網技術的快速發展,云計算技術已經被廣泛應用于各行各業,對于企業來說,云計算技術已經成為提升企業信息化...

    未知1612023-06-07
  • WEB服務器phpstudy默認不支持64位php的解決方法

    phpstudy默認不支持64位php的解決方法

    下面小編就為大家帶來一篇phpstudy默認不支持64位php的解決方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 ...

    jingxian4702019-10-17
  • WEB服務器WDCP控制面板升級mysql為5.7.11的方法

    WDCP控制面板升級mysql為5.7.11的方法

    本文主要講解在WDCP控制面板升級mysql為5.7.11的方法,有需要的朋友可以參考下...

    yuanxiaoping5322020-07-15
  • WEB服務器云端webdav服務器

    云端webdav服務器

    云端WebDAV服務器是一種在云端環境下提供WebDAV(Web Distributed Authoring and Versioning)協議服務的技術。WebDAV是一種HTTP擴展協議,它允許用戶通過Internet訪問分布...

    未知972023-05-25
主站蜘蛛池模板: 成人精品视频网站 | 成人在线视频国产 | 叉逼视频 | 一区二区三区四区免费看 | 久草高清视频 | 成人黄色小视频在线观看 | 黄色小视频在线免费看 | 激情网站在线观看 | 国产成人av一区二区 | 曰批全过程40分钟免费视频多人 | 精品国产乱码一区二区三区四区 | 福利一区二区三区视频在线观看 | 俄罗斯16一20sex牲色另类 | www.com超碰| 久久色伦理资源站 | 午夜视频亚洲 | 亚洲国产精品久久久久婷婷老年 | 国产精品一区二区三区在线播放 | 日美av在线 | 国产亚洲精品久久久久婷婷瑜伽 | 日韩黄色av网站 | 国产在线精品一区二区三区 | 久久精品伊人网 | 免费看h网站 | 久久精品国产99久久久古代 | 国产成人精品无人区一区 | 久久福利精品 | 中文字幕亚洲视频 | 91精品久久香蕉国产线看观看 | 成人短视频在线观看免费 | 久久99网| 亚洲一区二区国产 | 九九热在线视频免费观看 | 人人舔人人射 | 欧美一级无毛 | 一级黄色影院 | 97久色 | 国产色视频在线观看免费 | 2018亚洲男人天堂 | h视频免费在线观看 | 国产九九在线视频 |