JDBC返回ResultSet結果經過java反射獲得java對象

咱們先來寫一個不用框架,用JDBC來操做呢數據庫,下面寫一個簡單的例子:html

就是這麼簡單的一段代碼,而後就是想從數據庫中獲取相應的字段,就用get和set方法來處理,返回一個對象,寫起來就是麻煩,不通用。java

由於java有反射的功能,因此能夠抽取出來,寫個通用的方法,固然這裏參考了其餘大神的寫法,看了一些博客。數據庫

這裏先簡單處理這幾種經常使用類型,其餘的其實能夠後續再加上。這裏主要依賴反射obj.getDeclaredField(name).getType()獲取字段類型,而後經過obj.getMethod("set" + replace, type)來找到數據庫java對象的這個set方法,最終method.invoke(newInstance, rs.getString(i))來附值,這麼一想,若是查出來是一個很大的list的,那麼該怎麼優化呢?框架

先來使用一下,這個寫的小工具,就能夠不用繁瑣的get和set方法:工具

輸出:優化

上面是經過對象裏面的set和get方法來設置變量的值,這樣寫起來感受比較麻煩,直接用Field的set方法是否是更加簡單一點,可是這樣寫,訪問的是public對象,因此。。3d

這裏補充一下ResultSetMetaData接口都有哪些信息htm

可使用此對象得到列的數目和類型以及每一列的名稱:對象

  • getColumnCount(); 返回 ResultSet 中的列數。 
  • getColumnName(int); 返回列序號爲 int 的列名。 
  • getColumnLabel(int); 返回此列暗含的標籤。 
  • isCurrency(int); 若是此列包含帶有貨幣單位的一個數字,則返回 true。 
  • isReadOnly(int); 若是此列爲只讀,則返回 true。 
  • isAutoIncrement(int); 若是此列自動遞增,則返回 true。這類列一般爲鍵,並且始終是隻讀的。 
  • getColumnType(int); 返回此列的 SQL 數據類型。這些數據類型包括 

參考;https://www.cnblogs.com/ooo0/p/10225311.htmlblog

相關文章
相關標籤/搜索