Apple-DBUtilsパッケージのデータベース操作


•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()
<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>