使用DBUtilsフレームワーク(上)

昨日はもちろん、今日のDBUtilsフレームワークを誘発することがあるので、多くの伏線を行って、私たちと書かれたその実施の原則のためのシンプルなフレームワークも同様です。
いくつかの単語の男はそれが入力されている、と述べました。
コモンズ-dbutils JDBCは、それはコストが非常に低く、大幅に作業負荷をコーディングJDBC、だけでなく、プログラムのパフォーマンスには影響しませんdbutilsの使用を簡素化することができます学習、JDBCのシンプルなパッケージで、オープンソースのツールライブラリApacheの団体です。dbutilsを休止して好きではないそう多くは、同社の最初の選択肢になります。

JARパッケージをダウンロード:リンクします。https://pan.baidu.com/s/1BKtq_VoBw52qyIJr6c_CZg
抽出コード:skrfは
ああ、操作がより便利に、このオープンBaiduのネットワークディスク電話アプリケーションの内容をコピー

APIの説明:

  • org.apache.commons.dbutils.QueryRunner ---コアオペレーティングクラス
  • org.apache.commons.dbutils.ResultSetHandler
  • org.apache.commons.dbutils.DbUtils ---ツール

ResultSetHandler最も完全なデータベース操作と組み合わせて使用することができるQueryRunner簡略化されたクラスのSQLクエリは、大幅に符号量を削減することができます。
QueryRunnerクラスには2つのコンストラクタを提供します:
デフォルトコンストラクタが
javax.sql.DataSourceのコンストラクタのパラメータを作成する必要があります。

過負荷4クラスコンストラクタQueryRunnerがあるQueryRunner(データソースDS)はデータベーストランザクションDBUtils管理フレームワークにQueryRunnerオブジェクトを構成した場合、それぞれのデフォルトのトランザクションは、単一のケースをSQL。このとき、この方法は、接続パラメータなしで使用する必要があります。
あなたは何も接続プーリングフレームワークが存在しないので、あなたは、自分の業務を管理する必要がQueryRunnerオブジェクトQueryRunner()コンストラクタを使用している場合は接続パラメータを使用する必要があり、この時点でデータベースに接続して取得することはできません。

Dbutilsツールは、退屈な作業のいくつかはツールの利用を達成するために作ることができる前にして、リソース、制御トランザクションを閉じ、ドライブをロードすることができます。

例準備を示しています。
新しいWebプロジェクトを作成し、jarファイルのパッケージをインポートすることを忘れないでください。
新しいテストクラスはQueryRunnerTest
後続のテストを容易にするために、クラスのメンバ変数を定義します

    private static ComboPooledDataSource dataSource = new ComboPooledDataSource();

挿入テストコードを書きます

@Test
public void testInsert() throws SQLException{
    //1、创建QueryRunner对象
    QueryRunner queryRunner = new QueryRunner(dataSource);
    //2、准备方法参数
    String sql ="insert into account values(null,?,?)";
    Object[] param = {"fff",1000};
    //3、调用方法
    queryRunner.update(sql, param);
}

DBUtils接続管理ツールキットと呼ばとしてQueryRunner Constructorオブジェクトを使用するには、手動でリソースを解放する必要はありません、それは私たちがリソースを解放するのに役立ちます。
そして、テストコード実行
ここに画像を挿入説明
正常に挿入します。

次のテスト更新SQLは、テストコードを書きます

    @Test
    public void testUpdate() throws SQLException{
        QueryRunner queryRunner = new QueryRunner(dataSource);
        String sql = "update account set money = ? where name = ?";
        Object[] param = {2000,"fff"};
        queryRunner.update(sql,param);
    }

テストコードがされて実行して
ここに画像を挿入説明
正常に変更。

次のテストは、テストコードを書く、SQLを削除します

@Test
public void testDelete() throws SQLException{
    QueryRunner queryRunner = new QueryRunner(dataSource);
    String sql = "delete from account where id = ?";
    queryRunner.update(sql,2);
}

実行したテストコードがされて
ここに画像を挿入説明
正常に削除されました。

今、私たちは、転送シナリオをシミュレートします。

@Test
public void testTransfer() throws SQLException{
    double  money = 100;
    String outAccount = "aaa";
    String inAccount = "bbb";
    String sql1 = "update account set money = money - ? where name = ?";
    String sql2 = "update account set money = money + ? where name = ?";
    
    QueryRunner queryRunner = new QueryRunner(dataSource);
    queryRunner.update(sql1,money,outAccount);
    //产生一个错误
    int d = 1 / 0;
    queryRunner.update(sql2,money,inAccount);
}

テストコードを実行していない
ここに画像を挿入説明
避けるために、しばらくBBBアカウントの量がこれ以上あなたがDBUtils管理に接続されているので、100未満、AAAアカウントをプログラムエラーを、デフォルトのSQLがトランザクションであるので、我々は自分の業務を管理しなければなりませんこれが起こります。

コードを変更する転送

    @Test
    public void testTransfer() throws SQLException{
        double  money = 100;
        String outAccount = "aaa";
        String inAccount = "bbb";
        String sql1 = "update account set money = money - ? where name = ?";
        String sql2 = "update account set money = money + ? where name = ?";
        
        //手动事务管理
        QueryRunner queryRunner = new QueryRunner();
        Connection conn = JDBCUtils.getConnection();
        conn.setAutoCommit(false);
        try {
            queryRunner.update(conn,sql1,money,outAccount);
            //产生一个错误
            int d = 1 / 0;
            queryRunner.update(conn,sql2,money,inAccount);
            
            DbUtils.commitAndCloseQuietly(conn);
        } catch (Exception e) {
            DbUtils.rollbackAndCloseQuietly(conn);
            e.printStackTrace();
        }
    }

このとき、実行コード
ここに画像を挿入説明
テーブルデータは、更新操作がロールバックされることを示す、変更されていません。

おすすめ

転載: www.cnblogs.com/blizzawang/p/11411790.html