DBUtilsを使ってみた。

DBUtilsを使ってみた。
DownLoadは以下から実行してください。
http://commons.apache.org/dbutils/

早速入門レベルの実装をして見たいと思います。
では吟じます。
まず以下のテーブルを用意します。
20090621144553
そこから以下を実行してみます。

package dbutil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class Insert {

	private final static String DRIVER = "org.gjt.mm.mysql.Driver";

	private final static String URL = "jdbc:mysql://localhost:3306/test?autoReconnect=true";

	private final static String USER_NAME = "root";

	private final static String PASS = "mysql";
	
	private static Connection con;

	public static void main(String[] args) {
		// Insertする配列を作成する
		String[] clm1 = { "3", "damePG" };
		String[] clm4 = { "4", "赤木" };
		String[] clm5 = { "5", "小暮" };
		String[] clm7 = { "7", "宮城" };
		String[] clm9 = { "9", "沢北" };
		String[] clm10 = { "10", "桜木" };
		String[] clm11 = { "11", "流川" };
		String[] clm14 = { "14", "三井" };
		
		getConnection();
		try {
			insert(clm1);
			insert(clm4);
			insert(clm5);
			insert(clm7);
			insert(clm9);
			insert(clm10);
			insert(clm11);
			insert(clm14);
			System.out.println("insert()を実行してみます");
			select();
			
			delete(clm1);
			delete(clm4);
			delete(clm5);
			delete(clm7);
			delete(clm9);
			delete(clm10);
			delete(clm11);
			delete(clm14);
			
			System.out.println("delete()を実行してみます");
			select();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private static void getConnection() {
		try {
			Class.forName(DRIVER);
			con = DriverManager.getConnection(URL, USER_NAME, PASS);
		} catch (Exception e) {
			System.out.println("Connection取得に失敗");
		}
	}
	
	private static void insert(String[] member) throws SQLException {
		QueryRunner qr = new QueryRunner();
		qr.update(con, "INSERT INTO TEST VALUES(?,?)", member);
	}
	
	private static void delete(String[] member) throws SQLException {
		QueryRunner qr = new QueryRunner();
		qr.update(con, "DELETE FROM TEST WHERE ID = ? AND NAME = ?", member);
	}
	private static void select() throws SQLException {
		QueryRunner qr = new QueryRunner();
		ResultSetHandler blh = new ArrayListHandler();
		List list = (List)qr.query(con, "SELECT * FROM TEST", blh);
		for (Iterator it = list.iterator(); it.hasNext();) {
			Object[] object = (Object[])it.next();
			for (int i = 0; i < object.length; i++) {
				System.out.println("#----------------------------------");
				System.out.println("id: " + object[0]);
				System.out.println("name :" + object[1]);
			}
		}
	}
}

結果は以下です。

insert()を実行してみます
#----------------------------------
id: 1
name :だめなPG
#----------------------------------
id: 1
name :だめなPG
#----------------------------------
id: 2
name :だめプログラマ
#----------------------------------
id: 2
name :だめプログラマ
#----------------------------------
id: 3
name :damePG
#----------------------------------
id: 3
name :damePG
#----------------------------------
id: 4
name :赤木
#----------------------------------
id: 4
name :赤木
#----------------------------------
id: 5
name :小暮
#----------------------------------
id: 5
name :小暮
#----------------------------------
id: 7
name :宮城
#----------------------------------
id: 7
name :宮城
#----------------------------------
id: 9
name :沢北
#----------------------------------
id: 9
name :沢北
#----------------------------------
id: 10
name :桜木
#----------------------------------
id: 10
name :桜木
#----------------------------------
id: 11
name :流川
#----------------------------------
id: 11
name :流川
#----------------------------------
id: 14
name :三井
#----------------------------------
id: 14
name :三井
delete()を実行してみます
#----------------------------------
id: 1
name :だめなPG
#----------------------------------
id: 1
name :だめなPG
#----------------------------------
id: 2
name :だめプログラマ
#----------------------------------
id: 2
name :だめプログラマ

まだ、API見ながら実装したレベルなので正直ちゃんと理解していません。
現場に出たときのメモ代わりにこれを使用するつもりです。
もっと使いこなしたいなぁ。
Handlerを自分の思う通りに使いこなせればきっと面白いことができるはず!!。
BJリーグはTVでなかなか放送しないなぁと思うdamePGでした。