Apple-DBUtilsパッケージのデータベース操作
5341 ワード
•commons-dbutilsはApacheが提供するオープンソースJDBCツールのクラスです。JDBCに対するシンプルなパッケージです。学習コストが極めて低いです。dbutilsを使うとjdbcコードの仕事量を大幅に簡略化できます。同時にプログラムの性能にも影響しません。
•APIの紹介:–org.apache.com mmons.dbutils.QueryRunner–org.apache.com mmons.dbutils.Result SetHandler–ツール類•org.apache.com mmons.dbutils.DbUtils。
QueryRunner類には二つの主要な方法があります。
query():データの照会に使用する
udate():添削用
Result SetHandlerインターフェースは、クエリされたデータを要求に応じて別のフォーマットに変換します。
•
ArayHandler:結果セットの最初の行のデータをオブジェクト配列に変換します。
•ArayListHandler:結果をまとめた行のデータを一つの配列に変えて、Listに保存します。
•BenHandler:結果セットの最初の行のデータを対応するJavaBeanの例にパッケージ化します。
•BenListHandler:結果をまとめた各ラインのデータを対応するJavaBeanの例にカプセル化し、Listに格納する。
•ColumnListHandler:結果を一列にまとめたデータをListに格納します。
•KeyedHandler(name):結果集の各行のデータを一つのMapにカプセル化し、これらのmapをもう一つのmapに保存します。そのkeyは指定されたkeyです。
•MapHandler:結果集の最初の行のデータを一つのMapにパッケージ化します。keyは列名で、valueは対応する値です。
•MapListHandler:結果をまとめた各ラインのデータを一つのMapにカプセル化し、Listに保存する
----------------------------以下は具体的なDemo-----------------------------------------------------------------
QueryRunner.udate()
•APIの紹介:–org.apache.com mmons.dbutils.QueryRunner–org.apache.com mmons.dbutils.Result SetHandler–ツール類•org.apache.com mmons.dbutils.DbUtils。
QueryRunner類には二つの主要な方法があります。
query():データの照会に使用する
udate():添削用
Result SetHandlerインターフェースは、クエリされたデータを要求に応じて別のフォーマットに変換します。
•
ArayHandler:結果セットの最初の行のデータをオブジェクト配列に変換します。
•ArayListHandler:結果をまとめた行のデータを一つの配列に変えて、Listに保存します。
•BenHandler:結果セットの最初の行のデータを対応するJavaBeanの例にパッケージ化します。
•BenListHandler:結果をまとめた各ラインのデータを対応するJavaBeanの例にカプセル化し、Listに格納する。
•ColumnListHandler:結果を一列にまとめたデータをListに格納します。
•KeyedHandler(name):結果集の各行のデータを一つのMapにカプセル化し、これらのmapをもう一つのmapに保存します。そのkeyは指定されたkeyです。
•MapHandler:結果集の最初の行のデータを一つのMapにパッケージ化します。keyは列名で、valueは対応する値です。
•MapListHandler:結果をまとめた各ラインのデータを一つのMapにカプセル化し、Listに保存する
----------------------------以下は具体的なDemo-----------------------------------------------------------------
QueryRunner.udate()
<span style="font-size:14px;"> /**
* QueryRunner update
* INSERT, UPDATE DELETE
*/
@Test
public void testQueryRunnerUpdate() {
//1. QueryRunner
QueryRunner queryRunner = new QueryRunner();
String sql = "DELETE FROM customers " +
"WHERE id IN (?,?)";
Connection connection = null;
try {
connection = JDBCTools.getConnection();
//2. update
queryRunner.update(connection,
sql, 12, 13);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span>
BenHandler:結果集の第一条の記録をBenHandlerオブジェクト作成時に入ってきたクラスパラメータに対応するオブジェクトに変更します。<span style="font-family:SimSun;font-size:14px;"><span style="font-size:14px;font-weight: normal;">public void testBeanHandler() {
QueryRunner queryRunner = new QueryRunner();
Connection conn = null;
try {
conn = JDBCTools.getConnection();
String sql = "SELECT id, name customerName, email, birth "
+ "FROM customers WHERE id>=?";
Customer customer = queryRunner.query(conn, sql, new BeanHandler(
Customer.class), 5);
System.out.println(customer);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.releaseDB(null, null, conn);
}
}</span></span>
BenListHandler:結果セットを1つのListに変更し、このListはnullではないが、空セット(すなわちsize()方法は0に戻るかもしれない。<span style="font-family:SimSun;font-size:14px;">public void testBeanListHandler(){
String sql = "SELECT id, name customerName, email, birth " +
"FROM customers";
QueryRunner queryRunner = new QueryRunner();
Connection conn = null;
try {
conn = JDBCTools.getConnection();
Object object = queryRunner.query(conn, sql,
new BeanListHandler<>(Customer.class));
System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, conn);
}
}</span>
MapHandler:SQL文に対応する第一条の記録に対応するMapオブジェクトを返す。キー:SQLクエリの列名(列の別名ではない)、値:列の値。<span style="font-family:SimSun;font-size:14px;"><span style="font-size:14px;font-weight: normal;">public void testMapHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT id, name customerName, email, birth " +
"FROM customers WHERE id = ?";
try {
connection = JDBCTools.getConnection();
Map<String, Object> map = queryRunner.query(connection,
sql, new MapHandler(), 4);
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span></span>
MapLiat Handler:結果を1つのMapのList.MapLiat Handlerに変換する:戻る複数のレコードに対応するMapのセット。<span style="font-family:SimSun;font-size:14px;font-weight: normal;">public void testMapListHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT id, name, email, birth " +
"FROM customers";
try {
connection = JDBCTools.getConnection();
List<Map<String, Object>> mapList = queryRunner.query(connection,
sql, new MapListHandler());
System.out.println(mapList);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span>
ScaraHandler:結果セットを数値に戻します。<span style="font-family:SimSun;">public void testScalarHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT name FROM customers " +
"WHERE id = ?";
try {
connection = JDBCTools.getConnection();
Object count = queryRunner.query(connection, sql,
new ScalarHandler(), 6);
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}</span>