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

jdbc結果集轉換成對象列表

系統 2073 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久影院亚洲精品 | 99福利在线 | 免费一级欧美片片线观看 | 一区一精品| 国内精品久久久久影院蜜芽 | 国产精品一区在线麻豆 | 国产精品高清免费网站 | 九九影音 | 国产精品人人视频 | 国产精品高清视亚洲乱码 | 午夜不卡在线 | 成人影院高清在线观看免费网站 | 久久久免费视频观看 | 久草在线资源 | 亚洲一区二区欧美日韩 | 国产精品视频第一区二区 | 免费一级毛片在播放视频 | 99热免费精品 | 欧美a视频 | 国产成人综合一区精品 | 中国女人内谢25xxxxx | 久久国产精品99精品国产987 | 国产精品久久久久久久久久久久 | 热久久这里是精品6免费观看 | 欧美成人全部费免网站 | 性欧美视频 | 欧美性xxx久久 | 免费无毒片在线观看 | 亚洲国产精品高清在线一区 | 亚洲视频在线免费播放 | 精品推荐 国产 | 热久久只有精品 | 深夜免费在线观看 | 久热这里只有精品视频6 | 欧美日韩国产精品 | 成人99国产精品一级毛片 | 日本高清视频不卡 | 亚洲91| 成人网视频在线观看免费 | 亚洲视频在线一区二区三区 | 国产网站麻豆精品视频 |