DBUtilsの使用の詳細

7621 ワード

DBUtilsの使用の詳細
一:Dbutilsとは何ですか.
Dbutils:主にJDBCのコードをカプセル化し、Daoレイヤの操作を簡素化します.役割:javaプログラマーを助け、Daoレイヤコードの簡単なフレームワークを開発します.前の万能検索検索などのツールクラスに似ています
二:なぜDbutilsが必要なのですか.
Dbutilsを使用する前に、Daoレイヤで使用されていた技術はJDBCでした.では、JDBCの弊害を分析します.(1)データベースリンクオブジェクト、sql文操作オブジェクト、結果セットオブジェクトをカプセル化します.この3つのオブジェクトは定義(2)カプセル化データのコード繰り返しを繰り返し、操作が複雑で、コード量が大きい(3)リソースを解放するコード繰り返しです.
3:Dbutilsの3つのコアクラスの紹介:
1:DbUtils:接続データベースオブジェクト----jdbc補助メソッドの集合クラス、スレッド安全構造メソッド:DbUtils()作用:制御接続、制御本屋、制御駆動ロードクラス.
2:QueryRunner:SQL       ,              ,    。
          :
      (1)QueryRunner():           QueryRunner  ,           ,       Connection  ,         。
                Connection.setAutoCommit(false);             
                Connection.commit();         

      (2)QueryRunner(DataSource ds):           queryRunner  ,           ,   Connection  ,      。
                DataSource:        。

                    :
 QueryRunner()
       update(Connection conn, String sql, Object... params)
       query(Connection conn, String sql,ResultSetHandler rsh, Object... params)

 QueryRunner(DataSource ds)     
       update(String sql, Object... params)
       query(String sql, ResultSetHandler rsh, Object... params)

3:ResultSet Handle:データをカプセル化するポリシーオブジェクト------カプセル化結果セットのデータを別のオブジェクトポリシーに変換する:データをオブジェクトにカプセル化する方法(例:データベースをUserに保存、配列に保存、集合に保存)方法紹介:handle(ResultSet)
四:Dbutilsクイックスタート
Dbutilsの使用上の注意点:(1)インポートするjarパッケージ:①MySqlドライバ②c 3 p 0パッケージ③DbUtilsパッケージ(2)c 3 p 0プロファイルを追加(3)JDBCUtilsツールクラスを自分で追加:c 3 p 0接続プールオブジェクトを取得する(データソースの取得と接続の取得方法がある)
コードプレゼンテーション:QueryRunner(JDBCUtils.getDataSource()は、sqlを実行するたびに接続を入力する必要がなく、効率が高いようにデータソースのコンストラクション関数に接続を取得します.1.update(String sql,Object...params)のような削除を追加します.
@Test
 
public void test2(){
     
 
//   :  queryRunner  ,    sql  
 
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
 
//   :  sql  
 
String sql = "update user set name = ? where id = ?";
 
//   :  sql  ,params: sql     
 
//  , sql         ,  user       
 
try {
     
 
int update = qr.update(sql,   1,  2);
 
System.out.println(update);
 
} catch (SQLException e) {
     
 
e.printStackTrace();
} 
}

2.QueryRunnerのqueryメソッドとResultSet Handlerインタフェースの使用を調べ、結果セット処理クラスをシミュレートする
public class MyHandler  {
        
//            ,        list ,      !
 
   public List
 handle(ResultSet rs) throws SQLException {
     
      //     ,    Resultset    
      List
 list = new ArrayList

このことから,結果セットはオブジェクト,集合など多様なタイプである可能性があり,Dbutilsはまた結果セットを取り出して単独で記述していることが分かる.
3.queryテスト
@Test
 
public void test4(){
     
 
//   :  queryRunner  ,    sql  
 
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
 
//   :  sql  
 
String sql = "select * from user";
 
//   :  sql  ,params: sql     
 
//  , sql         ,  user       
 
try {
     
 
List
 list = qr.query(sql, new MyHandler());
 
System.out.println(list);
 
} catch (SQLException e) {
     
 
e.printStackTrace();
 
}
 
}


DbUtilsは、次のような10のResultSet Handler実装クラスを提供します.
①ArrayHandler:クエリ結果の最初の行のデータをObject配列に保存する
②ArrayListHandlerクエリーの結果を各行ごとにObject配列にカプセル化し、リストセットにデータを格納する
③BeanHandlerクエリー結果の1行のデータをuserオブジェクトにカプセル化する
④BeanListHandlerクエリー結果の各行をuserオブジェクトにカプセル化し、リストセットに格納する
⑤ColumnListHandlerクエリ指定フィールドのすべての値をリストセットにカプセル化する
⑥MapHandlerクエリー結果の最初の行のデータをmap結合にカプセル化する
⑦MapListHandlerクエリー結果の各行をmap集合にカプセル化し、map集合をList集合に格納する
⑧BeanMapHandlerクエリー結果の各行データをUserオブジェクトにカプセル化し、maoセットに格納する
⑨KeyedHandlerクエリの結果の各ローのデータをmap 1にカプセル化し、map 1セット(複数あり)をmap 2セット(1つのみ)に格納する
⑩ScalarHandlerクエリー指定オブジェクトの指定フィールドの値またはcount、avg、max、min、sum…関数のようなクエリーパッケージの実行結果
以上の10個のResultSetHandler実装クラス、一般的なBeanHandler、BeanListHandler、ScalarHandler
まとめ:DBUtilsはコンパクトなJDBC軽量級パッケージのツールパッケージで、その最も核心的な特性は結果セットのパッケージで、直接検索した結果セットをJavaBeanにパッケージすることができて、これは私たちのために最も退屈で、最も間違いやすい大部分の仕事をしました.DBUtilsを使用する前に、いくつかの問題に注意してください:1、DBUtilsはJDBCの簡単なパッケージで、JDBCと混合して使用することができます.2、DBUtilsは結果セットをJavaBeanに自動的にカプセル化するには厳しい要求がある:JavaBeanの仕様を満たさなければならない.次に、Beanのgetterはsetterメソッドの名前と結果セットの列名に対応し、JavaBeanのプライベートメンバーとテーブル結果セットの列名に対応することを要求しない.3、DBUtilsの性能はJDBCの性能と同じで、テスト中に性能損失が発見されず、高性能と同時に、JDBCの柔軟性を失わない.