DBUtils:私たちはCRUDコードを簡素化するだけでヘルプ。ない仕事のその範囲で、仕事にデータベース接続とアクセスを作成します。
A、DBUtilsアプリケーション
ダウンロード①、DBUtils jarファイル
http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi
②は、SQL Server、C3P0、ビルドにDBUtils環境は(適切なjarファイルをインポート)
SQL Serverの:sqljdbc42.jar(JDBCドライバ)
C3P0:c3p0-0.9.5.5.jar、mchange-コモンズ-javaの-0.2.19.jar、C3P0-config.xmlの文件
DBUtilts:コモンズ-dbutils-1.7.jar
③、追加および削除
QueryRunner queryRunner = 新しい QueryRunner(新ComboPooledDataSource()); // 增加 queryRunner.update( "アカウント値への挿入(ヌル、、)?"、 "AA"、1000年); // 删除 queryRunner.update(、5を"ID =アカウントから削除しますか?" ); // 更新 queryRunner.update( "更新アカウントの設定お金= ID =?"、10000000、6);
④お問い合わせ
1、直接新しい匿名クラスを実装し、そのインタフェースのResultSetHandler
公共 ボイドいるTestMain(){ ComboPooledDataSourceのdataSource = 新しいComboPooledDataSource()。 QueryRunnerランナー = 新しいQueryRunner(データソース); 試す{ アカウント結果、= runner.query( "?ID =アカウントSELECT * FROM" 新しい ResultSetHandler <アカウント> (){ @Override パブリックアカウントハンドル(のResultSet RS)がスローするSQLException { アカウントアカウント = 新しいアカウントを(); ながら、( rs.next()){ account.setId(rs.getInt( "ID")); account.setName(rs.getString( "名前" )); account.setMoney(rs.getBigDecimal( "お金" )); } 戻りアカウント。 } }、 1 ); System.out.println(result.toString())。 } キャッチ(のSQLException E){ e.printStackTrace(); } }
2、フレームワークインタフェースクラスResultSetHandlerを使用して実装
2.1、ResultSetHandlerインターフェイスカテゴリを達成するために、次のとおりです。
BeanHandler、オブジェクトとしてカプセル化されたデータへの単一のクエリ
リストにBeanListHandler、データパッケージの複数のクエリ<OBJECT>
リストにBeanListHandler、データパッケージの複数のクエリ<OBJECT>
最も頻繁に使用される2
ArrayHandler、単一のアレイにカプセル化クエリデータ
ArrayListHandlerは、配列された要素のセット、セットへのデータパッケージの複数の問い合わせ
ArrayListHandlerは、配列された要素のセット、セットへのデータパッケージの複数の問い合わせ
MapHandler、単一のマップにカプセル化されたクエリデータ
MapListHandler、要素が設定されたマップであるセットへのデータパッケージの複数のクエリ、
ColumnListHandler
KeyedHandler
ScalarHandler(セルT_Nameから)(1カウント--select)
2.2、コード実装
2.2.1、単一のオブジェクトのクエリ
1 QueryRunner queryRunner = 新しい QueryRunner(新しいComboPooledDataSource())。 2 // 查询单个对象 3アカウントアカウント= queryRunner.query( "選択*口座からのid =?" 、 4 新しい BeanHandler <アカウント>(アカウント。クラス)、8)。
2.2.2、クエリの複数のオブジェクト
1 QueryRunner queryRunner = 新しい QueryRunner(新しいComboPooledDataSource())。 2一覧<アカウント>リスト= queryRunner.query( "アカウントから選択*" 、 3 新 豆リストハンドラ <アカウント>(アカウント。クラス));
第二に、カスタムDBUtils
Ⅰ、更新方法
1 公共 INT の更新(SQL文字列、オブジェクト...引数){ 2 接続の接続= NULL ; 3 PreparedStatementのPS = NULL ; 4 int型の結果= 0 ; 5 試み{ 6。 接続= JDBCUtil.getConnection(); 7 PS = 接続。 prepareStatement(SQL) 。8 。9 ParameterMetaDataアンザのmetaData = ps.getParameterMetaData(); 10 // パラメータの数、パラメータに割り当てられたサイクル 11 のために(INTI = 0; I <metaData.getParameterCount(); I ++ ){ 12 ps.setObject(I + 1 、引数[I])。 13 } 14 15 結果= ps.executeUpdate()。 16 } キャッチ(のSQLException E){ 17 18 e.printStackTrace(); 19 } 最後に{ 20 21 } 22 リターン結果。 23 }
Ⅱ、クエリ(クエリ)
1、クエリ結果のユーザーインターフェース
1 // 指定されたパッケージ型のオブジェクトにクエリ結果セット、およびオブジェクトインスタンス戻り 2 パブリック インターフェース ResultSetHandler <T> { 3。 Tハンドル(ResultSetのResultSetを); 4 }
2、一般クエリ
1 公共 Tクエリ(文字列SQL、ResultSetHandler <T> ハンドラ、...オブジェクト引数){ 2 =コネクション接続NULL ; 3 PreparedStatementのPS = NULL ; 4 のResultSetたresultSet = NULL ; 5 試み{ 6 接続= JDBCUtil.getConnection() ; 7 PS = のConnection.prepareStatement(SQL) 。8 。9 ParameterMetaDataアンザのmetaData = ps.getParameterMetaData(); 10 // パラメータの数、パラメータに割り当てられたサイクル 11 のために(INT0 = I; I <metaData.getParameterCount(); I ++ ){ 12である 。ps.setObject(I + 1 、引数[I]); 13である } 14 // クエリ結果セット 15 たresultSet = ps.executeQuery(); 16 // クラスハンドルメソッド呼び出しインターフェースはResultSetHandlerを実現 17。 リターンhandler.handle(たresultSet); 18である } キャッチ(のSQLException E){ 19。 20が e.printStackTrace(); 21である } 最後に{ 22は 23である } 24 リターン NULL ; 25 }
3、コールカスタム一般的なクエリ
1 公共 ボイドいるTestMain(){ 2 アカウントアカウント= CommonCRUDUtils.query( "アカウントSELECT * FROM ID =?"、新しい 3 ResultSetHandler <アカウント> (){ 4 5 @Override 6 パブリックアカウントハンドル(のResultSetたresultSet){ 7 アカウントアカウント= 新しいアカウント(); 8 試み{ 9 もし(resultSet.next()){ 10 account.setId(resultSet.getInt( "ID" )); 11 account.setName(( "名" resultSet.getString ))。 12 account.setMoney(のResultSet.getBigDecimal( "お金" )); 13 リターンアカウント。 14 } 15 } キャッチ(のSQLException E){ 16 17 e.printStackTrace(); 18 } 19 リターン ヌル。 20 } 21 22 }、3 )。 23 24 のSystem.out.println()(account.toString)。 25 }