java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)的元信息
簡介
java中數(shù)據(jù)庫的操作相信大家都不陌生,JDK提供了java.sql包來規(guī)范對數(shù)據(jù)庫的各種操作。我們最常用的操作就是從數(shù)據(jù)庫的ResultSet中獲取數(shù)據(jù),其實這個包中還有一個非常有用的類叫做ResultSetMetaData,可以通過這個類來獲取查詢數(shù)據(jù)的元信息,一起來看看吧。
使用ResultSet
java.sql.ResultSet是一個通用的規(guī)范,用來表示從數(shù)據(jù)庫獲取到的數(shù)據(jù)。
通常來說,我們通過connection來創(chuàng)建Statement,然后通過執(zhí)行查詢語句來得到:
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
resultSet提供了各種getter方法,來獲取結(jié)果集中的各種數(shù)據(jù)??梢酝ㄟ^index,也可以通過column名稱來獲取。
當(dāng)然,使用index它的效率會更高,index是從1開始的。如果是通過列名來獲取數(shù)據(jù),傳入的列名是大小寫不敏感的,如果結(jié)果數(shù)據(jù)中有多個匹配的類,則會返回最先匹配的那一列。
在get的過程中,JDBC driver會嘗試將結(jié)果數(shù)據(jù)的數(shù)據(jù)庫類型轉(zhuǎn)換成為對應(yīng)的java類型。
JDBC 2.0 API,ResultSet也可以進(jìn)行更新和插入操作,可能我們很少這樣做,一般都是先構(gòu)造好數(shù)據(jù)后直接插入。
先看下更新操作:
rs.absolute(5); // 將游標(biāo)移動到第5行 rs.updateString("SITE", "www.flydean.com"); // 將SITE更新為www.flydean.com rs.updateRow(); // 更新到數(shù)據(jù)庫中
再看下插入操作:
rs.moveToInsertRow(); // 將游標(biāo)移動到插入行 rs.updateString(1, "www.flydean.com"); // 將插入行的第一列更新為www.flydean.com rs.updateInt(2,35); // 更新第二列為35 rs.updateBoolean(3, true); // 更新第三列為true rs.insertRow(); rs.moveToCurrentRow();
使用ResultSetMetaData
有了ResultSet,我們可以通過它的getMetaData方法,來獲取結(jié)果集的元數(shù)據(jù)。
什么是元數(shù)據(jù)呢?元數(shù)據(jù)又叫做Metadata,是用來描述數(shù)據(jù)屬性的數(shù)據(jù)。
ResultSetMetaData getMetaData() throws SQLException;
舉個具體的例子:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); boolean b = rsmd.isSearchable(1);
ResultSetMetaData提供了很多非常有用的元數(shù)據(jù)檢測方法:
我們可以拿到列的名稱、類型、字段長度、是否為空等很多有意義的數(shù)據(jù)。
這個元數(shù)據(jù)有什么用呢?
通過元數(shù)據(jù),我們可以拿到數(shù)據(jù)庫的描述文件,從而可以自動創(chuàng)建對應(yīng)的數(shù)據(jù)庫表格的映射關(guān)系,從而減少手動代碼的輸入,非常的方便。
用過MybatisPlus的朋友可能知道,它提供了一個AutoGenerator,可以自動生成mapper對象和對應(yīng)的xml文件,非常好用,大家可以試一試。
總結(jié)
以上就是ResultSet和ResultSetMetaData的介紹,大家學(xué)會了嗎?
到此這篇關(guān)于java小知識之查詢數(shù)據(jù)庫數(shù)據(jù)元信息的文章就介紹到這了,更多相關(guān)java查詢數(shù)據(jù)庫數(shù)據(jù)元信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合MybatisPlus實現(xiàn)增刪改查功能
MybatisPlus是國產(chǎn)的第三方插件,?它封裝了許多常用的CURDapi,免去了我們寫mapper.xml的重復(fù)勞動。本文將整合MybatisPlus實現(xiàn)增刪改查功能,感興趣的可以了解一下2022-05-05Java基于裝飾者模式實現(xiàn)的圖片工具類實例【附demo源碼下載】
這篇文章主要介紹了Java基于裝飾者模式實現(xiàn)的圖片工具類,結(jié)合完整實例形式分析了裝飾者模式實現(xiàn)圖片的判斷、水印、縮放、復(fù)制等功能,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09Spring MVC 基于URL的映射規(guī)則(注解版)
這篇文章主要介紹了Spring MVC 基于URL的映射規(guī)則(注解版) ,詳細(xì)的介紹了幾種方式,有興趣的可以了解一下2017-05-05Mybatis學(xué)習(xí)總結(jié)之mybatis使用建議
這篇文章主要介紹了Mybatis學(xué)習(xí)總結(jié)之mybatis使用建議的相關(guān)資料,非常具有參考借鑒價值,需要的朋友可以參考下2016-05-05SpringBoot?MP簡單的分頁查詢測試實現(xiàn)步驟分解
好久沒水后端的東西了,最近在做vue項目寫前端的代碼,所以cloud也停進(jìn)度了,吃完飯突然記得我沒有在博客里寫分頁的東西,雖然項目中用到了,但是沒有拎出來,這里就拎出來看看2023-04-04Spring中@Scheduled和HttpClient的連環(huán)坑
這篇文章主要給大家介紹了關(guān)于Spring中@Scheduled和HttpClient的連環(huán)坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03