亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

jdbc結果集轉換成對象列表

系統 2465 0

將jdbc結果集轉換成對象列表
估計hibernate就是用得這種方式進行轉換的。
實體對象

Java代碼 復制代碼
  1. package ?test; ??
  2. //實體對象,該對象的屬性與數據庫中的字段相同,當然可以改變具體看需求 ??
  3. public ? class ?Person?{ ??
  4. ???? private ? int ?id; ??
  5. ???? private ? int ?age; ??
  6. ???? private ?String?name; ??
  7. ???? public ? int ?getId()?{ ??
  8. ???????? return ?id; ??
  9. ????} ??
  10. ???? public ? void ?setId( int ?id)?{ ??
  11. ???????? this .id?=?id; ??
  12. ????} ??
  13. ???? public ? int ?getAge()?{ ??
  14. ???????? return ?age; ??
  15. ????} ??
  16. ???? public ? void ?setAge( int ?age)?{ ??
  17. ???????? this .age?=?age; ??
  18. ????} ??
  19. ???? public ?String?getName()?{ ??
  20. ???????? return ?name; ??
  21. ????} ??
  22. ???? public ? void ?setName(String?name)?{ ??
  23. ???????? this .name?=?name; ??
  24. ????} ??
  25. ???? ??
  26. }??

?

Java代碼 復制代碼
  1. package ?test; ??
  2. ??
  3. import ?java.lang.reflect.Field; ??
  4. import ?java.sql.Connection; ??
  5. import ?java.sql.PreparedStatement; ??
  6. import ?java.sql.ResultSet; ??
  7. import ?java.sql.SQLException; ??
  8. import ?java.util.List; ??
  9. ??
  10. public ? class ?Main?{ ??
  11. ???? //用于測試的方法 ??
  12. ???? public ? static ? void ?main(String[]?args)? throws ?InstantiationException,?IllegalAccessException,?IllegalArgumentException,?ClassNotFoundException?{ ??
  13. ????????Connection?conn?=?DbUtils.getConn(); ??
  14. ????????ResultSet?rs?=? null ; ??
  15. ????????PreparedStatement?psmt?=? null ; ??
  16. ????????System.out.println(conn); ??
  17. ???????? try ?{ ??
  18. ????????????psmt?=?conn.prepareStatement( "select?*?from?person" ); ??
  19. ????????????rs?=?psmt.executeQuery(); ??
  20. ????????????List?list?=?DbUtils.populate(rs,?Person. class ); ??
  21. ???????????? for ( int ?i?=? 0 ?;?i<list.size()?;?i++){ ??
  22. ????????????????Person?per?=?(Person)?list.get(i); ??
  23. ????????????????System.out.println( "person?:?id?=?" +per.getId()+ "?name?=?" +per.getName()+ "?age?=?" +per.getAge()); ??
  24. ????????????} ??
  25. ????????}? catch ?(SQLException?e)?{ ??
  26. ????????????e.printStackTrace(); ??
  27. ????????} finally { ??
  28. ???????????? if (rs!= null ){ ??
  29. ???????????????? try ?{ ??
  30. ????????????????????rs.close(); ??
  31. ????????????????}? catch ?(SQLException?e)?{ ??
  32. ????????????????????e.printStackTrace(); ??
  33. ????????????????} ??
  34. ????????????????rs= null ; ??
  35. ????????????} ??
  36. ???????????? if (psmt!= null ){ ??
  37. ???????????????? try ?{ ??
  38. ????????????????????psmt.close(); ??
  39. ????????????????}? catch ?(SQLException?e)?{ ??
  40. ????????????????????e.printStackTrace(); ??
  41. ????????????????} ??
  42. ????????????????psmt= null ; ??
  43. ????????????} ??
  44. ???????????? if (conn!= null ){ ??
  45. ???????????????? try ?{ ??
  46. ????????????????????conn.close(); ??
  47. ????????????????}? catch ?(SQLException?e)?{ ??
  48. ????????????????????e.printStackTrace(); ??
  49. ????????????????} ??
  50. ????????????????conn= null ; ??
  51. ????????????} ??
  52. ????????} ??
  53. ???????? ??
  54. ????} ??
  55. ??
  56. }??
Java代碼 復制代碼
  1. package ?test; ??
  2. ??
  3. import ?java.lang.reflect.Field; ??
  4. import ?java.sql.Connection; ??
  5. import ?java.sql.DriverManager; ??
  6. import ?java.sql.ResultSet; ??
  7. import ?java.sql.ResultSetMetaData; ??
  8. import ?java.sql.SQLException; ??
  9. import ?java.util.ArrayList; ??
  10. import ?java.util.List; ??
  11. ??
  12. public ? class ?DbUtils?{ ??
  13. ???? private ? static ?String?url?=? "jdbc:mysql://localhost:3306/test" ; ??
  14. ???? private ? static ?String?username?=? "root" ; ??
  15. ???? private ? static ?String?password?=? "" ; ??
  16. ???? private ? static ?String?driverClass?=? "com.mysql.jdbc.Driver" ; ??
  17. ???? //沒什么好說的,獲取數據庫連接 ??
  18. ???? public ? static ?Connection?getConn(){ ??
  19. ????????Connection?conn?=? null ; ??
  20. ???????? try ?{ ??
  21. ????????????Class.forName(driverClass); ??
  22. ????????????conn?=?DriverManager.getConnection(url,username,password); ??
  23. ????????}? catch ?(ClassNotFoundException?e)?{ ??
  24. ????????????e.printStackTrace(); ??
  25. ????????}? catch ?(SQLException?e)?{ ??
  26. ????????????e.printStackTrace(); ??
  27. ????????} ??
  28. ???????? ??
  29. ???????? return ?conn; ??
  30. ????} ??
  31. ???? /* ?
  32. ?????*?將rs結果轉換成對象列表 ?
  33. ?????*?@param?rs?jdbc結果集 ?
  34. ?????*?@param?clazz?對象的映射類 ?
  35. ?????*?return?封裝了對象的結果列表 ?
  36. ?????*/ ??
  37. ???? public ? static ?List?populate(ResultSet?rs?,?Class?clazz)? throws ?SQLException,?InstantiationException,?IllegalAccessException{ ??
  38. ???????? //結果集的元素對象? ??
  39. ????????ResultSetMetaData?rsmd?=?rs.getMetaData(); ??
  40. ???????? //獲取結果集的元素個數 ??
  41. ????????? int ?colCount?=?rsmd.getColumnCount(); ??
  42. //???????System.out.println("#"); ??
  43. //???????for(int?i?=?1;i<=colCount;i++){ ??
  44. //???????????System.out.println(rsmd.getColumnName(i)); ??
  45. //???????????System.out.println(rsmd.getColumnClassName(i)); ??
  46. //???????????System.out.println(rsmd.getColumnClassLabel(i)); ??
  47. //???????} ??
  48. ????????? //返回結果的列表集合 ??
  49. ?????????List?list?=? new ?ArrayList(); ??
  50. ????????? //業務對象的屬性數組 ??
  51. ?????????Field[]?fields?=?clazz.getDeclaredFields(); ??
  52. ????????? while (rs.next()){ //對每一條記錄進行操作 ??
  53. ?????????????Object?obj?=?clazz.newInstance(); //構造業務對象實體 ??
  54. ????????????? //將每一個字段取出進行賦值 ??
  55. ????????????? for ( int ?i?=? 1 ;i<=colCount;i++){ ??
  56. ?????????????????Object?value?=?rs.getObject(i); ??
  57. ????????????????? //尋找該列對應的對象屬性 ??
  58. ????????????????? for ( int ?j= 0 ;j<fields.length;j++){ ??
  59. ?????????????????????Field?f?=?fields[j]; ??
  60. ????????????????????? //如果匹配進行賦值 ??
  61. ????????????????????? if (f.getName().equalsIgnoreCase(rsmd.getColumnName(i))){ ??
  62. ????????????????????????? boolean ?flag?=?f.isAccessible(); ??
  63. ?????????????????????????f.setAccessible( true ); ??
  64. ?????????????????????????f.set(obj,?value); ??
  65. ?????????????????????????f.setAccessible(flag); ??
  66. ?????????????????????} ??
  67. ?????????????????} ??
  68. ?????????????} ??
  69. ?????????????list.add(obj); ??
  70. ?????????} ??
  71. ???????? return ?list; ??
  72. ????} ??
  73. }??

jdbc結果集轉換成對象列表


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎在线免费观看视频 | 久久青| 天天操操操操操操 | 在线播放国产一区 | 欧洲一级毛片免费 | 四虎影视在线看 | 成年女人a毛片免费视频 | 欧美一欧美一区二三区性 | 一道本免费视频 | 日韩不卡毛片 | 久久久久久夜精品精品免费 | 国产99视频精品免费视频7 | 国产精品久久国产精麻豆99网站 | 亚洲伊人色一综合网 | 日本精品视频在线 | 九九久久国产精品大片 | 国内精品久久久久尤物 | 国产日韩精品一区二区在线观看 | 精品热99| 日本一级毛片视频在线看 | 99视频在线 | 日本最新免费二区 | 国产99视频精品免费视频7 | 首页 动漫 亚洲 欧美 日韩 | 四虎国产精品一区二区 | 乱色 另类图区 | 天天做天天添天天谢 | 性夜黄a爽爽免费视频国产 性夜影院爽黄a爽免费看网站 | 看欧美的一级毛片 | 在线观看欧美精品 | 91婷婷色涩涩 | 九九婷婷| 日韩欧美高清视频 | 欧美精品成人一区二区视频一 | 日韩爱爱 | 一级毛片黄色片 | 99国产精品一区二区 | 欧美日韩国产精品va | 日韩毛片免费观看 | 两性色午夜视频免费老司机 | 亚洲精品国产第一区二区三区 |