JDBCいちいちDBUtilsの使用、JavaBean

20828 ワード

目次
  • DBUtils
  • QueryRunnerクラス
  • QueryRunner実装追加、更新、削除操作
  • QueryRunnerクエリ動作
  • を実装
  • ResultSet Handler結果セット
  • JavaBeanって何ですか?
  • BeanHandler
  • BeanListHandler
  • ScalarHander
  • ColumnListHandler


  • 小結
  • DBUtils
    ディレクトリにジャンプJDBCのみを使用して開発すると、冗長コードが多すぎることがわかります.JDBC開発を簡略化するために、この例ではapache commonsコンポーネントのメンバー:DBUtilsを採用します.
      :   JDBC  
    
  • jarパケット
  • をインポートする必要がある.
    Dbutilsの3つのコア機能の紹介
  • QueryRunnerでは、sql文の操作に対するAPIが提供する.
  • ResultSetHandlerインタフェースは、select操作後、結果セットをどのようにカプセル化するかを定義する.
  • DbUtilsクラス.これはツールクラスであり、リソースとトランザクションを閉じる方法
  • を定義しています.
    QueryRunnerコアクラス
    ディレクトリに移動してデータソースを提供
  • 構造方法
  • QueryRunner(DataSource)コアクラスを作成し、データソースを提供し、内部で自己メンテナンス接続
  • 一般的な方法
  • update(String sql , Object ... params) DML文
  • を実行する.
  • query(String sql , ResultSetHandler , Object ... params) DQL文を実行し、クエリー結果をオブジェクトにカプセル化します.


  • 接続の提供
  • 構造方法
  • QueryRunner()コアクラスを作成し、データソースが提供されていません.具体的な操作を行うには、Connection
  • を手動で提供する必要があります.
  • 一般的な方法
  • update(Connection conn , String sql , Object ... params)提供されたConnectionを使用して、
  • を完了します.
  • DML文
  • query(Connection conn , String sql , ResultSetHandler , Object ... params)提供されたConnectionを使用してDQL文を実行し、クエリ結果をオブジェクトにカプセル化します.


  • QueryRunnerによる追加、更新、削除を実現
    ディレクトリにジャンプ
  • update(String sql,Object...params)テーブルデータの増加、削除、更新を完了するための
  • アクションの追加、更新、削除
    /**
     * QueryRunner    、  、    
     */
    public class DBUtilsDemo1 {
    
        @Test
        public void insert() throws Exception {
            //         SQL    
            QueryRunner qr = new QueryRunner(DruidUtil.getDataSource());
            String sql = "INSERT INTO product(pid, pname, price, category_id) VALUES(?,?,?,?)";
            Object[] params = {100, "   ", 5500, "c005"};
            int count = qr.update(sql, params);
            System.out.println("    :=" + count);
        }
    
    
        @Test
        public void update() throws Exception {
            QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
            String sql = "UPDATE product SET pname=?,price=?,category_id=? WHERE pid=?";
            Object[] params = {"  99", "998", "c009", 13};
            int count = qr.update(sql, params);
            System.out.println(count);
        }
    
        @Test
        public void delete() throws SQLException {
            QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());
            String sql = "DELETE from product WHERE pid = ?";
            Object[] params = {100};
            int r = queryRunner.update(sql, params);
            System.out.println(r);
        }
    }
    

    QueryRunnerによるクエリー操作
    ディレクトリにジャンプ
  • query(String sql,ResultSetHandler rsh,Object...params)は、テーブルデータのクエリー操作パラメータを完了するために使用されます.
  • String sql:sql文、パラメータは?代替
  • ResultSetHandlerrsh:結果セットプロセッサ、インタフェース、必然的な伝達実装クラスオブジェクト
  • Object...params:可変パラメータ、伝達パラメータリスト、配列.作用:sqlに?賦課を行う


  • ResultSetHandler結果セット
    ディレクトリにジャンプ
  • BeanHandler:結果セットの最初のレコードを指定したjavaBeanにカプセル化します.
  • BeanListHandler:結果セットの各レコードを指定javaBeanにカプセル化し、これらjavaBeanをListセットにカプセル化する
  • .
  • ScalarHandler:単一データ用です.たとえばselect count(*)fromテーブル操作です.
  • ColumnListHandler:結果セットで指定する列のフィールド値を、1つのリストセットにカプセル化する
  • .
    JavaBeanがディレクトリにジャンプするJavaBeanはクラスであり、開発ではデータのカプセル化によく使用されます.以下の特性を有する.
  • 実装インタフェース:java.io.Serializableは、通常インタフェースを実装する手順は省略されており、プログラムに影響を与えません.
  • プライベートフィールド:privateタイプフィールド名;
  • getter/setterメソッドを提供する:
  • は、無パラメトリック構造
  • を提供する.
    BeanHandlerがディレクトリクエリデータテーブル結果セットにジャンプする処理の1つ:BeanHandler処理方式データテーブルの結果セットの1行目のデータをJavaBeanクラスにカプセル化するオブジェクト構築方法:BeanHandler(Classtype)はClassタイプのオブジェクトを渡し、結果をどのクラスのオブジェクトにカプセル化するか
        @Test
        public void testQueryBeanHandler() throws Exception{
            QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
            String sql = "SELECT * FROM product WHERE pid = ?";
            Object[] params = {6};
            //      
            Product pro = queryRunner.query(sql, new BeanHandler<>(Product.class), params);
            System.out.println(pro);
        }
    

    BeanListHandlerがディレクトリクエリデータテーブルの結果セットにジャンプする処理の1つ:BeanListHandler処理方式データテーブルの各行のデータをJavaBeanクラスのオブジェクトにカプセル化し、複数行のデータ、複数のJavaBeanオブジェクト、リストセットを格納する.
       @Test
       public void testQueryBeanListHandler() throws Exception{
           QueryRunner queryRunner = new QueryRunner(DBCPUtil.getDataSource());
           String sql = "SELECT * FROM product";
           Object[] params = {};
           List<Product> pros = queryRunner.query(sql, new BeanListHandler<Product>(Product.class), params);
           for (Product pro : pros) {
               System.out.println(pro);
           }
       }
    

    ScalarHanderがディレクトリにジャンプする役割:クエリー結果の列をリスト集合オブジェクト構築方法に格納する:
  • public ScalarHandler()クエリ結果を取得する最初の行の最初の列
  • public ScalarHandler(int index):クエリー結果の最初の行のindex列
  • を取得します.
  • public ScalarHandler(String ColumnName):クエリーの結果を取得する最初の行のColumnName列
  •     @Test
        public void testQueryScalarHandler() throws Exception{
            QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
            String sql = "SELECT * FROM product WHERE pid = ?";
            Object[] params = {2};
            //            
            Object o = queryRunner.query(sql, new ScalarHandler(2), params);
            System.out.println(o);
        }
    

    ColumnListHandlerがディレクトリにジャンプする役割:クエリー結果の列をリスト集合オブジェクトに格納する.集約関数の構築方法:
  • public ColumnListHandler():リスト集合に第1列の内容を格納
  • .
  • public ColumnListHandler(int index):指定番号列の内容をListセットに格納
  • .
  • public ColumnListHandler(String ColumnName):指定列名に対応する列の内容をリストセットに格納
  • .
        @Test
        public void testQueryColumnListHandler() throws Exception{
            QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());
            String sql = "SELECT * FROM product";
            // List list = queryRunner.query(sql, new ColumnListHandler());//        
            // List list = queryRunner.query(sql, new ColumnListHandler(2)); //            
            List<Object> list = queryRunner.query(sql, new ColumnListHandler("pname"));
            for (Object o : list) {
                System.out.println(o);
            }
        }
    

    小結
    ディレクトリDBUtilsツールにジャンプ
  • 作用:JDBCの操作を簡略化
  • DBUtils共通クラスとメソッド
  • QueryRunner SQL文オブジェクトの実行
  • update(Connection conn,String sql,Object...params)挿入テーブルレコード、更新テーブルレコード、削除テーブルレコード
  • query(Connection conn,String sql,ResultSet Handler handler,Object...params)クエリテーブルレコード
  • ResultSet Handler処理結果セットのオブジェクト
  • BeanHandler:結果セットの最初のレコードを指定したjavaBeanにカプセル化します.
  • BeanListHandler:結果セットの各レコードを指定javaBeanにカプセル化し、これらjavaBeanをListセットにカプセル化する
  • .
  • ScalarHandler:単一データ用です.たとえばselect count(*)fromテーブル操作です.
  • ColumnListHandler:結果セットで指定する列のフィールド値を、1つのリストセットにカプセル化する
  • .