精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产国产亚洲一二三| 天天综合网天天| 成人动漫精品一区二区| 欧美一区亚洲一区| 四虎成人免费影院| 欧美日本三级| 一本久久a久久精品亚洲| 影音先锋欧美资源| 天天干免费视频| 另类的小说在线视频另类成人小视频在线 | 亚洲中文一区二区三区| 欧美视频导航| 色哟哟入口国产精品| 亚洲国产中文字幕在线视频综合| 欧美精品一二区| 不卡一区二区在线观看| 国产日韩欧美中文在线| 色综合久久66| 国产不卡一区二区视频| 337p日本欧洲亚洲大胆鲁鲁| 成人免费观看男女羞羞视频| 国产日韩欧美夫妻视频在线观看| 国产一级做a爱免费视频| jizzjizz欧美69巨大| 亚洲大胆人体视频| 污视频在线观看免费网站| 日本免费一区二区三区四区| 亚洲图片欧美一区| 91制片厂免费观看| 男同在线观看| 99久久99久久综合| www.久久久| 亚洲视频在线免费播放| 久久性天堂网| 96精品视频在线| 久久国产一级片| 五月激情综合| 日韩在线视频网| 97在线观看免费视频| 欧美黄色网视频| 亚洲精品一区二区三区在线观看 | 国产一区二区女| 国产精品视频午夜| 成年人视频免费| 另类av一区二区| 91高清免费在线观看| 国产午夜久久久| 欧美天天视频| 欧美精品videosex性欧美| 欧美久久久久久久久久久久| 久久久久电影| 麻豆国产va免费精品高清在线| 亚洲a∨无码无在线观看| 成人亚洲一区二区| 在线观看欧美视频| 黄色av片三级三级三级免费看| 国产一区二区三区电影在线观看| 亚洲人成网站在线播| 成人性生交大免费看| 国产欧美日韩| 中文字幕亚洲无线码a| 成人免费视频入口| 99视频精品全国免费| 美女久久久久久久久久久| 欧美人禽zoz0强交| 激情视频一区二区三区| 97在线看福利| 草莓视频18免费观看| 日韩中文字幕亚洲一区二区va在线| 日韩av第一页| 中文字幕人妻一区二区三区视频| 蜜臀a∨国产成人精品| 国产欧美日韩免费| 99热这里只有精品在线观看| 国产成人日日夜夜| 久久精品国产一区二区三区不卡| 青青青草原在线| 国产午夜精品一区二区| 欧美一区二区三区成人久久片 | 青青青免费在线| 欧美黑人一区| 欧美日韩一二三区| 亚洲av午夜精品一区二区三区| 卡通动漫精品一区二区三区| 亚洲性生活视频在线观看| 懂色av粉嫩av蜜臀av一区二区三区| 欧美fxxxxxx另类| 97超级碰在线看视频免费在线看 | 全国精品久久少妇| 亚洲影院高清在线| 熟妇人妻系列aⅴ无码专区友真希| 久久免费精品国产久精品久久久久| 性欧美.com| 欧美videossex另类| 黑丝美女久久久| 日本黄色福利视频| 激情小说一区| 日韩在线www| 久久不卡免费视频| 精品无人区卡一卡二卡三乱码免费卡| 亚洲影院色在线观看免费| 亚洲色图21p| 综合亚洲深深色噜噜狠狠网站| 免费人成自慰网站| 91九色综合| 337p日本欧洲亚洲大胆色噜噜| 99国产精品免费| 亚洲区国产区| 91精品中文在线| 欧美高清成人| 亚洲高清在线精品| 日本xxxx黄色| 亚洲动漫在线观看| 欧美日韩国产va另类| 中文字幕在线网站| 91免费国产在线观看| 欧美性潮喷xxxxx免费视频看| jvid一区二区三区| 日韩精品在线影院| 日本a在线观看| 黑人精品欧美一区二区蜜桃| 日本公妇乱淫免费视频一区三区| 日本精品600av| 欧美日韩国产区一| 欧美另类z0zx974| 9色精品在线| 国产精品福利视频| 宅男在线观看免费高清网站 | www.五月激情| 国产精品成人午夜| 男女男精品视频站| 国产一区二区三区四区五区传媒| 91国内在线视频| 亚洲成人77777| 亚洲日本韩国一区| www.com久久久| 久久精品播放| 国产日韩精品在线观看| 91在线品视觉盛宴免费| 欧美丝袜丝nylons| 亚洲激情图片网| 美女视频黄 久久| 亚洲欧美日韩精品综合在线观看| 久久91导航| 在线观看国产欧美| 91禁在线观看| 中文字幕一区二区三区不卡| 99国产精品久久久久久| 国产高清久久| 成人精品视频在线| av在线网址观看| 欧美一级理论片| 麻豆视频在线观看| 成人午夜短视频| 欧美激情视频免费看| 欧美人与动xxxxz0oz| 2018国产精品视频| 男男激情在线| 欧美性xxxxx极品少妇| 成人一级片免费看| 狠狠色丁香婷综合久久| 午夜精品美女久久久久av福利| 热三久草你在线| 亚洲色图国产精品| 一级aaaa毛片| 亚洲九九爱视频| www.17c.com喷水少妇| 国产欧美欧美| 无遮挡亚洲一区| 亚洲我射av| 久久久久久久激情视频| 日韩电影免费| 欧美日韩视频在线第一区| 天天看天天摸天天操| 国产成人av电影在线观看| 色综合久久久久无码专区| 精品国产aⅴ| 亚洲v日韩v综合v精品v| 18aaaa精品欧美大片h| 国产亚洲a∨片在线观看| 99精品久久久久久中文字幕| 午夜视频久久久久久| 精品亚洲aⅴ无码一区二区三区| 久久成人综合网| 亚洲一区二区三区av无码| 国产日韩视频在线| 91成人免费看| 日韩福利一区| 久久99精品久久久久久青青91| 色丁香婷婷综合久久| 欧美日韩亚洲综合在线| 日韩欧美大片在线观看| 国产精品另类一区| 中文字幕 日本| 老司机亚洲精品| 色乱码一区二区三区熟女| 日本妇女一区| 亚洲一区二区三区视频| www.com.cn成人| 欧美久久久精品| 国产裸舞福利在线视频合集| 日韩精品一区二区三区四区| 成人免费一级片| 亚洲午夜免费电影| 中日韩一级黄色片| 久久精品亚洲精品国产欧美kt∨| 中国特级黄色片| 久久精品国产久精国产爱| 国产极品尤物在线| 欧美69wwwcom| 亚洲精品永久www嫩草| 日韩av中文字幕一区| av激情久久| 国产日本亚洲| 国产欧美日韩中文| 日韩三区免费| 欧美在线观看一区二区三区| 任你弄在线视频免费观看| xvideos亚洲人网站| 国产三级视频在线播放线观看| 亚洲精品在线三区| 亚洲国产综合一区| 欧美一区二区在线不卡| 中文字幕一区二区人妻痴汉电车| 偷拍一区二区三区| 久久综合综合久久| 亚洲精品免费在线播放| 亚洲AV无码国产成人久久| 91免费看片在线观看| 国产69视频在线观看| 国产精品99久| 性生交大片免费看l| 国产精品综合久久| 九九九九九九九九| 国内一区二区在线| 午夜激情视频网| 国内精品伊人久久久久av影院| 黄色永久免费网站| 美腿丝袜亚洲综合| 国产精品区在线| 久久99国产精品免费网站| 97超碰成人在线| 亚洲综合免费视频| 精品一区二区三区视频在线观看 | 国产在线播放一区二区三区| 孩娇小videos精品| 久久se精品一区精品二区| www.这里只有精品| 精品无人区卡一卡二卡三乱码免费卡 | 中文字幕影音先锋| 亚洲图片欧美一区| 黄色片视频网站| 欧美日韩裸体免费视频| 成人午夜淫片100集| 色综合天天综合网天天狠天天| av片免费观看| 欧美日韩成人在线| 国产乱色精品成人免费视频| 日韩一区二区不卡| 亚洲国产日韩在线观看| 亚洲国产精品久久精品怡红院 | 正在播放国产一区| 最新97超碰在线| 色伦专区97中文字幕| 顶级网黄在线播放| 久久久亚洲国产| 日韩影片中文字幕| 国产主播精品在线| 无码国模国产在线观看| 国精产品一区二区| 成人精品久久| 激情五月六月婷婷| 欧美亚洲一级| 亚洲精品久久久久久宅男| 国产福利一区二区三区视频在线| a天堂视频在线观看| 久久久久久久久久看片| 国产精品白丝喷水在线观看| 亚洲国产日韩精品| 天堂网一区二区| 欧美一区二区不卡视频| 亚洲色图 校园春色| 精品激情国产视频| 女海盗2成人h版中文字幕| 国产精品久久久久久久久粉嫩av| 久久69av| 欧美日韩一区二| 一区二区三区四区日韩| 男人亚洲天堂网| 国产一区二区h| 99久久人妻无码精品系列| 亚洲欧美另类图片小说| 亚洲欧美日韩激情| 欧美成人一区二区三区在线观看| 精品视频一二三| 久久久久在线观看| 少妇高潮一区二区三区99| 精品九九九九| 自由日本语亚洲人高潮| 在线不卡中文字幕播放| 国产成人综合欧美精品久久| 7777精品伊人久久久大香线蕉完整版| 午夜福利理论片在线观看| 久久中文字幕视频| 88xx成人网| 国产欧美日韩伦理| 一区二区电影在线观看| 在线观看免费污视频| 97精品视频在线观看自产线路二| 久久久久久久久久久久久女过产乱| 欧美性xxxx极品hd欧美风情| 亚洲精品国产一区二| 日韩网站免费观看高清| 日韩精品99| 你懂的视频在线一区二区| 欧美日韩国产综合网| 狠狠操狠狠干视频| 国产网站一区二区| 午夜影院免费在线观看| 亚洲成av人影院在线观看| 在线观看免费版| 国产精品高精视频免费| 啪啪激情综合网| 日韩视频免费播放| 国产黄色成人av| 麻豆精品国产免费| 欧美久久久久久久久久| 成人p站proumb入口| 日韩免费中文字幕| 亚洲最好看的视频| 国产又大又硬又粗| 久久看人人爽人人| 在线观看亚洲欧美| 亚洲精品久久久久中文字幕欢迎你 | 欧美一级特黄aaaaaa在线看片| 免费在线看一区| 日韩影视一区二区三区| 色狠狠色噜噜噜综合网| 久久视频www| 日韩av电影免费观看高清| 九九亚洲视频| 91淫黄看大片| 国产精品天美传媒| 怡红院成永久免费人全部视频| 在线观看成人黄色| 永久免费观看精品视频| av不卡在线免费观看| 国产一区久久久| 私库av在线播放| 精品欧美久久久| 99thz桃花论族在线播放| 精品一区二区三区自拍图片区 | 91av网站在线播放| 西野翔中文久久精品字幕| 日日碰狠狠丁香久燥| 欧美国产精品一区二区三区| 中文字幕在线观看视频一区| 久久精品国产一区| 一本一道久久a久久| 国产妇女馒头高清泬20p多| 久久亚洲综合色| 中文字幕一区二区三区四区视频 | 欧美亚洲综合另类| 国产福利在线看| 91久久久久久久久久久久久| 欧美激情成人在线| 玖玖爱在线精品视频| 色老头久久综合| 快射av在线播放一区| 国产91视觉| 久久精品亚洲| 97在线观看视频免费| 精品久久久久久最新网址| 自拍一区在线观看| 亚洲在线视频一区二区| 国产成人高清在线| 亚洲av中文无码乱人伦在线视色| 中文字幕日韩欧美在线视频| 精品成人18| 欧美视频第三页| 日韩毛片在线免费观看| 人妻精品一区二区三区| 国产精品扒开腿做| 欧美1级日本1级| 新91视频在线观看| 欧美一区2区视频在线观看| 精品91久久| 国产亚洲精品久久久久久久| 91麻豆蜜桃一区二区三区| 国产又大又粗又长| 97在线精品国自产拍中文| 天天射—综合中文网| 无码一区二区精品| 欧美精品在线一区二区三区| av中文字幕在线看| 亚洲一区二区三区加勒比| 不卡免费追剧大全电视剧网站| 中文字幕乱码视频| 8x拔播拔播x8国产精品| 欧美91视频|