JDBCいちいちDBUtilsの使用、JavaBean
20828 ワード
目次 DBUtils QueryRunnerクラス QueryRunner実装追加、更新、削除操作 QueryRunnerクエリ動作 を実装 ResultSet Handler結果セット JavaBeanって何ですか? BeanHandler BeanListHandler ScalarHander ColumnListHandler
小結 DBUtils
ディレクトリにジャンプJDBCのみを使用して開発すると、冗長コードが多すぎることがわかります.JDBC開発を簡略化するために、この例ではapache commonsコンポーネントのメンバー:DBUtilsを採用します. jarパケット をインポートする必要がある.
Dbutilsの3つのコア機能の紹介 QueryRunnerでは、sql文の操作に対するAPIが提供する. ResultSetHandlerインタフェースは、select操作後、結果セットをどのようにカプセル化するかを定義する. DbUtilsクラス.これはツールクラスであり、リソースとトランザクションを閉じる方法 を定義しています.
QueryRunnerコアクラス
ディレクトリに移動してデータソースを提供構造方法 一般的な方法 を実行する.
接続の提供構造方法 を手動で提供する必要があります.
一般的な方法 を完了します. DML文
QueryRunnerによる追加、更新、削除を実現
ディレクトリにジャンプ update(String sql,Object...params)テーブルデータの増加、削除、更新を完了するための アクションの追加、更新、削除
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タイプのオブジェクトを渡し、結果をどのクラスのオブジェクトにカプセル化するか
BeanListHandlerがディレクトリクエリデータテーブルの結果セットにジャンプする処理の1つ:BeanListHandler処理方式データテーブルの各行のデータをJavaBeanクラスのオブジェクトにカプセル化し、複数行のデータ、複数のJavaBeanオブジェクト、リストセットを格納する.
ScalarHanderがディレクトリにジャンプする役割:クエリー結果の列をリスト集合オブジェクト構築方法に格納する: public ScalarHandler()クエリ結果を取得する最初の行の最初の列 public ScalarHandler(int index):クエリー結果の最初の行のindex列 を取得します. public ScalarHandler(String ColumnName):クエリーの結果を取得する最初の行のColumnName列
ColumnListHandlerがディレクトリにジャンプする役割:クエリー結果の列をリスト集合オブジェクトに格納する.集約関数の構築方法: public ColumnListHandler():リスト集合に第1列の内容を格納 . public ColumnListHandler(int index):指定番号列の内容をListセットに格納 . public ColumnListHandler(String ColumnName):指定列名に対応する列の内容をリストセットに格納 .
小結
ディレクトリ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つのリストセットにカプセル化する .
ディレクトリにジャンプJDBCのみを使用して開発すると、冗長コードが多すぎることがわかります.JDBC開発を簡略化するために、この例ではapache commonsコンポーネントのメンバー:DBUtilsを採用します.
: JDBC
Dbutilsの3つのコア機能の紹介
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を使用して、query(Connection conn , String sql , ResultSetHandler , Object ... params)
提供されたConnectionを使用してDQL文を実行し、クエリ結果をオブジェクトにカプセル化します.QueryRunnerによる追加、更新、削除を実現
ディレクトリにジャンプ
/**
* 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によるクエリー操作
ディレクトリにジャンプ
ResultSetHandler結果セット
ディレクトリにジャンプ
JavaBeanがディレクトリにジャンプするJavaBeanはクラスであり、開発ではデータのカプセル化によく使用されます.以下の特性を有する.
BeanHandlerがディレクトリクエリデータテーブル結果セットにジャンプする処理の1つ:BeanHandler処理方式データテーブルの結果セットの1行目のデータをJavaBeanクラスにカプセル化するオブジェクト構築方法:BeanHandler(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がディレクトリにジャンプする役割:クエリー結果の列をリスト集合オブジェクト構築方法に格納する:
@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がディレクトリにジャンプする役割:クエリー結果の列をリスト集合オブジェクトに格納する.集約関数の構築方法:
@Test
public void testQueryColumnListHandler() throws Exception{
QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM product";
// List
// List
List<Object> list = queryRunner.query(sql, new ColumnListHandler("pname"));
for (Object o : list) {
System.out.println(o);
}
}
小結
ディレクトリDBUtilsツールにジャンプ