精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JDBC的封裝類構建

開發 后端
在JAVA中JDBC的訪問是比較麻煩的,為此可以使用封裝的方法構建一個封裝性較好的JDBC工具類,提高編程的可復用性。

在JAVA中JDBC的訪問是比較麻煩的,為此可以使用封裝的方法構建一個封裝性較好的JDBC工具類,提高編程的可復用性。

具體的想法是:可以生成一個類封裝JDBC的connection和statement的構建,使用Property配置文件來保存JDBC訪問的路徑以及驅動,這樣可以有較好的可維護性,再使用反射特性構建一個DataUtil類封裝JDBC獲取的結果集,并把其顯示出來。

1.首先新建一個jdbc.property文件存放jdbc的相關屬性

  1. jdbc.driver=com.mysql.jdbc.Driver  
  2. jdbc.url=jdbc:mysql://localhost:3306/user  
  3. jdbc.user=root  
  4. jdbc.pass=123456 

通過PropertyUtil類可以獲得jdbc的屬性

  1. package jdbc;  
  2.  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.util.Properties;  
  6.  
  7. /**  
  8.  * 屬性工具類  
  9.  */ 
  10. public class PropertiesUtil {  
  11.     //屬性列表  
  12.     private static Properties properties = new Properties();  
  13.     //配置文件的路徑  
  14.     private static String CONFIG = "/cfg/jdbc.properties";  
  15.     //讀取資源文件, 設置輸入流  
  16.     private static InputStream is = PropertiesUtil.class.getResourceAsStream(CONFIG);  
  17.     //數據庫驅動  
  18.     public static String JDBC_DRIVER;  
  19.     //jdbc連接url  
  20.     public static String JDBC_URL;  
  21.     //數據庫用戶名  
  22.     public static String JDBC_USER;  
  23.     //數據庫密碼  
  24.     public static String JDBC_PASS;  
  25.     static {  
  26.         try {  
  27.             //加載輸入流  
  28.             properties.load(is);  
  29.             //獲得配置的各個屬性  
  30.             JDBC_DRIVER = properties.getProperty("jdbc.driver");  
  31.             JDBC_URL = properties.getProperty("jdbc.url");  
  32.             JDBC_USER = properties.getProperty("jdbc.user");  
  33.             JDBC_PASS = properties.getProperty("jdbc.pass");  
  34.         } catch (IOException e) {  
  35.             e.printStackTrace();  
  36.         }  
  37.     }  

2.建立JDBCExecutor類來封裝JDBC的數據源獲取工作,其中通過單例模式獲取數據庫的連接

  1. package jdbc;  
  2.  
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.ResultSet;  
  6. import java.sql.Statement;  
  7.  
  8. public class JDBCExecutor{  
  9.     //獲得驅動  
  10.     private static String DRIVER = PropertiesUtil.JDBC_DRIVER;  
  11.     //獲得url  
  12.     private static String URL = PropertiesUtil.JDBC_URL;  
  13.     //獲得連接數據庫的用戶名  
  14.     private static String USER = PropertiesUtil.JDBC_USER;  
  15.     //獲得連接數據庫的密碼  
  16.     private static String PASS = PropertiesUtil.JDBC_PASS;  
  17.     //連接對象  
  18.     private Connection connection;  
  19.     //維護一個本類型的對象  
  20.     private static JDBCExecutor jdbcExecutor;  
  21.     //Statement對象,可以執行SQL語句并返回結果  
  22.     private Statement stmt;  
  23.       
  24.     //私有構造器  
  25.     private JDBCExecutor() {  
  26.         try {  
  27.             //初始化JDBC驅動并讓驅動加載到jvm中  
  28.             Class.forName(DRIVER);  
  29.             //創建數據庫連接  
  30.             connection = DriverManager.getConnection(URL, USER, PASS);  
  31.             //創建Statement對象  
  32.             stmt = connection.createStatement();  
  33.         } catch (Exception e) {  
  34.             throw new JDBCException(e.getMessage());  
  35.         }  
  36.     }  
  37.       
  38.     //提供一個靜態方法返回本類的實例  
  39.     public static JDBCExecutor getJDBCExecutor() {  
  40.         //如果本類所維護jdbcExecutor屬性為空,則調用私有的構造器獲得實例  
  41.         if (jdbcExecutor == null) {  
  42.             jdbcExecutor = new JDBCExecutor();  
  43.         }  
  44.         return jdbcExecutor;  
  45.     }  
  46.       
  47.     /*  
  48.      * 執行一句查詢的sql  
  49.      */ 
  50.     public ResultSet executeQuery(String sql) {  
  51.         try {  
  52.             //利用Statement對象執行參數的sql  
  53.             ResultSet result = stmt.executeQuery(sql);  
  54.             return result;  
  55.         } catch (Exception e) {  
  56.             throw new QueryException(e.getMessage());  
  57.         }  
  58.     }  
  59.       
  60.     //執行單句INSERT、UPDATE 或 DELETE 語句, 如果執行INSERT時, 返回主鍵  
  61.     public int executeUpdate(String sql) {  
  62.         int result = -1;  
  63.         try {  
  64.             //執行SQL語句  
  65.             stmt.executeUpdate(sql);  
  66.             //獲得主鍵  
  67.             ResultSet rs = stmt.getGeneratedKeys();  
  68.             while(rs.next()) {  
  69.                 //返回最后一個主鍵  
  70.                 result = rs.getInt(1);  
  71.             }  
  72.             rs.close();  
  73.             return result;  
  74.         } catch (Exception e) {  
  75.             throw new QueryException(e.getMessage());  
  76.         }  
  77.     }  

3.為了將JDBC查詢操作的數據獲取,封裝數據獲取的類

  1. package jdbc;  
  2.  
  3.  
  4. import java.lang.reflect.Field;  
  5. import java.lang.reflect.Method;  
  6. import java.sql.ResultSet;  
  7. import java.util.ArrayList;  
  8. import java.util.Collection;  
  9.  
  10. import vo.User;  
  11. import dao.impl.UserDAOImpl;  
  12.  
  13.  
  14. /**  
  15.  * 數據轉換工具類  
  16.  */ 
  17. public class DataUtil {  
  18.  static UserDAOImpl us=new UserDAOImpl();  
  19.  //將rs中的值封裝成一個集合  
  20.  public static Collection getDatas(Collection result, ResultSet rs, Class clazz) {  
  21.   try {  
  22.    while (rs.next()) {  
  23.     //創建類的實例  
  24.     Object vo = clazz.newInstance();  
  25.     //獲取本對象的屬性  
  26.     Field[] fields = clazz.getDeclaredFields();  
  27.     //獲取父類的屬性  
  28. //    Field[] superFields = clazz.getSuperclass().getDeclaredFields();  
  29. //    //父類的屬性和自己的屬性相加  
  30. //    Field[] allFields = addFields(superFields, fields);  
  31.     //遍歷所有的屬性  
  32.     for (Field field : fields) {  
  33.      //獲得setter方法的方法名  
  34.      String setterMethodName = getSetterMethodName(field.getName());  
  35.      //獲得setter方法  
  36.      Method setterMethod = clazz.getMethod(setterMethodName, field.getType());  
  37.      invokeMethod(rs, field, vo, setterMethod);  
  38.     }  
  39.     result.add(vo);  
  40.    }  
  41.    rs.close();  
  42.   } catch (Exception e) {  
  43.    e.printStackTrace();  
  44.    throw new DataException(e.getMessage());  
  45.   }  
  46.   return result;  
  47.  }  
  48.    
  49.  //執行一個方法, 從ResultSet中獲取一個字段的數據, 調用vo的setter方法  
  50.  private static void invokeMethod(ResultSet rs, Field field, Object vo,   
  51.    Method setterMethod) {  
  52.   try {  
  53.    //當使用ResultSet獲取某個字段的時候, 如果沒有該字段, 會出現SQLException, 在這里忽略該異常  
  54.    String value = rs.getString(field.getName());  
  55.    //從ResultSet中獲取與該對象屬性名一致的字段, 并執行setter方法  
  56.    setterMethod.invoke(vo, value);  
  57.   } catch (Exception e) {  
  58.    //忽略異常  
  59.   }  
  60.  }  
  61.    
  62.  //根據屬性名獲得setter方法的方法名  
  63.  private static String getSetterMethodName(String fieldName) {  
  64.   String begin = fieldName.substring(01).toUpperCase();  
  65.   String end = fieldName.substring(1, fieldName.length());  
  66.   String methodName = "set" + begin + end;  
  67.   return methodName;  
  68.  }  
  69.    
  70.  //測試方法  
  71.  public static void main(String[] args) {  
  72.   JDBCExecutor executor = JDBCExecutor.getJDBCExecutor();  
  73.   us.AddUser(new User("111",12,"333"));  
  74. //  ResultSet rs = executor.executeQuery("select * from user");  
  75. //  Collection<User> result = DataUtil.getDatas(new ArrayList<User>(), rs,   
  76. //    User.class);  
  77. //  for (User user : result) {  
  78. //   System.out.println(user.getName());  
  79. //  }  
  80.  }  

通過上面Main方法中的調用,可以看出能夠很輕易的操縱JDBC連接了。

原文鏈接:http://blog.csdn.net/rommel1/article/details/7294501

【編輯推薦】

  1. Java并發編程之同步互斥問題
  2. Java中String.format的用法
  3. 郵件功能開發:JavaMail
  4. 6個提高Java開發者效率的工具
  5. 關于讀寫鎖算法的Java實現及思考
責任編輯:林師授 來源: rommel1的博客
相關推薦

2009-12-07 15:34:18

PHP類的封裝

2009-08-19 09:36:03

ADO封裝類

2018-01-30 18:49:16

前端JavascriptCSS

2022-02-21 18:43:42

Spring封裝多線程

2009-12-25 15:28:48

ADO類

2021-05-13 07:58:05

JDBC接口PreparedSta

2012-07-11 15:54:59

canvas

2023-09-18 07:46:28

2012-12-26 09:31:44

C#Winform

2024-04-01 13:05:13

C++接口類開發

2009-06-19 13:37:53

Spring JDBC

2024-01-29 16:47:44

函數封裝開發

2014-07-31 18:23:41

Process

2009-08-19 15:44:09

ObjectARX .

2024-05-27 00:00:00

C# 類參數數據

2020-12-31 09:04:54

Java類的設計類的封裝

2010-04-14 15:22:53

Oracle JDBC

2009-07-15 15:47:12

JDBC DAO

2010-07-06 16:19:02

協議封裝

2010-07-13 09:08:27

Widget開發
點贊
收藏

51CTO技術棧公眾號

欧美激情图片区| 91成人免费电影| 国产伦精品一区二区三区高清版| 日本少妇吞精囗交| 精品国产一区一区二区三亚瑟| 91久久精品一区二区二区| 一区二区三区国| 黄色一级a毛片| 免费在线成人| 久久国产精品免费视频 | 2020日本在线视频中文字幕| 91性感美女视频| 国产主播欧美精品| 在线观看精品国产| 91超碰成人| 亚洲精品一二区| 两性午夜免费视频| 小黄鸭精品aⅴ导航网站入口| 国产精品大尺度| 你懂的网址一区二区三区| 国产精品无码久久久久成人app| 好看的亚洲午夜视频在线| 一区二区亚洲欧洲国产日韩| www.17c.com喷水少妇| 国精品产品一区| 黑人欧美xxxx| 久艹在线免费观看| 男人和女人做事情在线视频网站免费观看| 99免费精品在线观看| 92福利视频午夜1000合集在线观看| jizz国产在线观看| 亚洲作爱视频| 欧美精品制服第一页| jizzjizz日本少妇| 国产中文字幕一区二区三区 | 国产精品入口免费视| 国产无精乱码一区二区三区| 911久久香蕉国产线看观看| 在线a欧美视频| 波多野结衣 在线| 农村少妇一区二区三区四区五区| 欧美一区二区在线不卡| 性生生活大片免费看视频| 日韩免费小视频| 日韩欧美国产骚| 欧美 日韩 国产在线观看| 大香伊人中文字幕精品| 亚洲乱码日产精品bd| 在线观看成人免费| 国产cdts系列另类在线观看| 国产精品不卡一区| 宅男在线精品国产免费观看| av在线免费观看网| 国产精品视频麻豆| 亚洲国产一区二区三区在线| 91亚洲精选| 国产精品久久久久永久免费观看| 亚洲精品成人三区| 在线播放麻豆| 最新成人av在线| 91制片厂免费观看| av超碰免费在线| 亚洲国产va精品久久久不卡综合| 亚洲精品蜜桃久久久久久| 超碰中文在线| 精品日本美女福利在线观看| 欧美日韩亚洲第一| 日本h片久久| 欧美日韩精品免费观看视频 | www.国产com| 久久精品亚洲| 国产精品丝袜视频| www.久久色| 成人h动漫精品| 欧美一级爽aaaaa大片| 国产三级电影在线| 1区2区3区国产精品| 警花观音坐莲激情销魂小说| 欧美videosex性极品hd| 精品福利在线看| 五月天婷婷激情视频| 日韩一级视频| 精品国产91乱码一区二区三区 | 日本中文字幕久久看| 欧美一区二区三区久久久| 精品综合久久久久久8888| 99国产高清| 国产在线视频网址| 亚洲天堂成人在线观看| 欧美激情视频免费看| 日本成人伦理电影| 欧美电影精品一区二区| 偷拍女澡堂一区二区三区| 日韩精品dvd| 欧美日韩国产成人在线| 国产三级精品三级在线观看| 激情另类小说区图片区视频区| 国产伦精品一区二区三区四区免费| 青青久在线视频免费观看| 亚洲欧洲一区二区三区| 亚洲中文字幕无码一区二区三区| 日韩免费电影| 欧美sm极限捆绑bd| a天堂中文字幕| 黄色日韩在线| 成人深夜直播免费观看| 四虎影视在线播放| 亚洲激情图片qvod| 黄色aaa级片| 欧美wwwsss9999| 另类美女黄大片| 日本视频www色| 男人天堂欧美日韩| 欧美大片欧美激情性色a∨久久| 精品美女久久久久| 狠狠久久亚洲欧美| 日本精品一区二区| 免费在线小视频| 欧美一区二区视频在线观看2022 | 在线观看日韩欧美| 久久久美女视频| 久久99久久99小草精品免视看| 久久96国产精品久久99软件| 动漫一区在线| 欧美在线不卡一区| 插吧插吧综合网| 黄色成人在线网站| 亚洲一区二区免费在线| 天天在线视频色| 在线观看亚洲成人| 亚洲午夜久久久久久久久红桃 | 欧美精品久久久久久久久久| 在线播放一级片| 久久久久免费观看| 国产在线精品91| 国产成人高清精品免费5388| 综合国产在线观看| 中文字幕精品无| 91社区在线播放| 成年人午夜视频在线观看| 日本精品在线播放| yw.139尤物在线精品视频| 中文人妻av久久人妻18| 久久这里都是精品| 欧美一级在线看| 韩国精品福利一区二区三区| 欧美高清视频在线| 黑人乱码一区二区三区av| 亚洲美女区一区| 黄页网站在线看| 国语对白精品一区二区| 国产精品久久一区二区三区| 先锋成人av| 精品免费日韩av| 日韩三级免费看| www.欧美精品一二区| 欧美日韩不卡在线视频| 国产精品xxx在线观看| 久久青草福利网站| 色天堂在线视频| 日韩欧美精品网站| 亚洲av无码国产精品麻豆天美| 久久蜜桃资源一区二区老牛| 日韩资源av在线| 啪啪av大全导航福利综合导航| 最新国产精品亚洲| 国产成人三级一区二区在线观看一| 亚洲精品日产精品乱码不卡| 国产精品果冻传媒| 午夜影院日韩| 一区二区三区四区欧美日韩| 成人污污视频| 国内精品小视频| 国产在线观看免费| 69堂精品视频| 国产乱码久久久久久| 91浏览器在线视频| www.天天射.com| 在线成人激情| 久久亚洲高清| 青青伊人久久| 久久久在线免费观看| 成人毛片视频免费看| 日韩欧美成人精品| 538精品在线视频| 91亚洲永久精品| 粉色视频免费看| 日韩天天综合| 伊人久久大香线蕉综合75| www.神马久久| 国产精品久久久久久久9999| 美女尤物在线视频| 在线免费看av不卡| 亚洲精品久久久狠狠狠爱| 色天天综合色天天久久| 午夜69成人做爰视频| 26uuu色噜噜精品一区| 小明看看成人免费视频| 国产日韩一区二区三区在线播放 | 国产超碰91| 播放一区二区| 韩国19禁主播vip福利视频| av在线之家电影网站| 日韩成人性视频| aaa一区二区| 欧美在线影院一区二区| 国产一级片免费看| 中文字幕一区二区三区色视频| 一女三黑人理论片在线| 国产精品99久久久久久久女警| 国产一区视频免费观看| 亚洲黄页一区| 国产香蕉一区二区三区| 成人一二三区| 久久国产一区| 大型av综合网站| 91av免费看| 日本在线一区二区| 国产成人精品久久二区二区91| 丁香花在线观看完整版电影| 欧美精品一区二区免费| 日本在线观看www| 亚洲人成网站色ww在线| 无码精品在线观看| 日韩精品最新网址| 国产精品久久无码一三区| 色婷婷av一区二区三区之一色屋| 日韩av电影网址| 亚洲黄色av一区| 91麻豆精品成人一区二区| 日本一区二区三区免费乱视频| 精品国产一区在线| 成人午夜视频在线观看| 午夜诱惑痒痒网| 韩国毛片一区二区三区| 伊人影院综合在线| 男女男精品视频| 在线观看免费黄网站| 石原莉奈在线亚洲三区| 日本在线视频www| 嫩草成人www欧美| 丁香啪啪综合成人亚洲| 亚洲免费中文| 精品久久久久久久免费人妻| 欧美专区18| 免费黄色一级网站| 日本欧美一区二区| wwww.国产| 久久电影网电视剧免费观看| 性生活免费在线观看| 另类综合日韩欧美亚洲| 黄色小视频免费网站| 黄色精品一二区| 久久精品无码一区二区三区毛片| 国产一区中文字幕| 国产一级片中文字幕| 国产91精品入口| 超碰男人的天堂| 久久只精品国产| 国产一二三四视频| 亚洲桃色在线一区| 久久久一区二区三区四区| 亚洲国产色一区| 欧美另类一区二区| 欧美亚洲一区二区在线观看| 中文字幕有码视频| 欧美一区二区精品在线| 欧美亚洲精品在线观看| 亚洲女成人图区| 在线观看h片| 欧美精品在线极品| 三妻四妾完整版在线观看电视剧| 国产成人91久久精品| 色成人综合网| 国产麻豆日韩| 成人在线免费观看网站| 国产成人免费高清视频| 午夜影院日韩| 久久久久久久久久一区二区| 成人国产亚洲欧美成人综合网| 泷泽萝拉在线播放| 国产精品久久久久桃色tv| 欧美久久久久久久久久久久| 欧美性色19p| 国产视频在线观看免费 | av二区在线| 欧美激情videoshd| 欧美特黄aaaaaaaa大片| 成人网址在线观看| 啪啪激情综合网| 国产精品h视频| 亚洲一区二区毛片| www.日本久久| 2020国产精品久久精品美国| 日韩影院一区二区| 91成人在线免费观看| 亚洲AV午夜精品| 在线视频精品一| 波多野一区二区| 亚洲精品免费在线视频| 竹菊久久久久久久| 精品一区二区三区无码视频| 奇米影视一区二区三区| 日批在线观看视频| 亚洲蜜臀av乱码久久精品| 神马久久久久久久| 日韩美女在线视频| 久操免费在线| 国产精品com| 午夜欧洲一区| 久久在线中文字幕| 激情图片小说一区| www.99热| 色综合久久久久综合体桃花网| www.色婷婷.com| 最近2019中文免费高清视频观看www99 | 国产中文字幕在线播放| 欧美贵妇videos办公室| 欧美网站免费| 日韩久久不卡| 麻豆精品91| 久久久久久久久免费看无码 | 久久久久久久久久久影院 | 久久国产精品高清一区二区三区| 欧美肥婆姓交大片| 成人短视频软件网站大全app| 奇米精品在线| 国产精品一二| 网站免费在线观看| 亚洲成人自拍偷拍| 性欧美18一19性猛交| 久久久精品一区二区| 欧美高清免费| 亚洲一卡二卡三卡| 美日韩一区二区| 亚洲女人毛茸茸高潮| 欧美日韩亚洲另类| 91高清在线| 国产乱人伦真实精品视频| 国产伦精品一区二区三区视频 | 欧美激情精品| 亚洲五码在线观看视频| 久久精品国产亚洲aⅴ| 国产第一页精品| 欧美高清性hdvideosex| 黄a在线观看| 99电影在线观看| 在线精品在线| 三级男人添奶爽爽爽视频 | 国产女无套免费视频| 久久综合国产精品台湾中文娱乐网| 亚洲高清影院| 日本一二三区视频在线| 成人一区二区视频| 男女视频免费看| 亚洲天堂av图片| 国产一区二区色噜噜| 免费看污污视频| 成a人片国产精品| 久久久久久久久久久影院| 永久555www成人免费| 日韩综合av| 18黄暴禁片在线观看| www.久久久久久久久| 精品成人无码久久久久久| 在线播放日韩欧美| 亚洲欧洲一二区| 国产成人艳妇aa视频在线| 99热99精品| 曰批又黄又爽免费视频| 欧美老女人性视频| 欧洲在线一区| 欧美一级视频在线| 亚洲成人一二三| 免费在线视频你懂得| 国产日韩精品入口| 国内精品美女在线观看| 中文字幕被公侵犯的漂亮人妻| 精品视频在线免费观看| 免费看电影在线| 日本欧美色综合网站免费| 狠狠色综合色综合网络| 国产精品日日夜夜| 伊人亚洲福利一区二区三区| 日韩成人视屏| 久久久精品在线视频| 亚洲欧美一区二区三区极速播放| 日本xxxx人| 国产精品久久久久久亚洲影视| 午夜久久免费观看| 亚洲欧美在线不卡| 欧美高清一级片在线| 偷拍自拍在线看| 国产一级大片免费看| 久久久亚洲精品石原莉奈| 国内精品国产成人国产三级| 日本最新高清不卡中文字幕| 欧美成人嫩草网站| 男人天堂av电影| 精品免费一区二区三区|