【Java】 Apache Commons DbUtils で、List<String> を返すようにするには...

DbUtils で、List<String> を返すようにするには...

 * ColumnListHandlerを使用する。

 ※ ColumnListHandler : Listの結果が欲しい場合に使用

サンプルデータ

テーブル

customer
CREATE TABLE `customer` (
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
	`first_name` VARCHAR(50) NULL DEFAULT NULL,
	`family_name` VARCHAR(50) NULL DEFAULT NULL,
	PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=7
;

データ

customer
INSERT INTO `customer` (`first_name`, `family_name`) VALUES ('Mike', 'Abel');
INSERT INTO `customer` (`first_name`, `family_name`) VALUES ('Ken', 'Allen');
INSERT INTO `customer` (`first_name`, `family_name`) VALUES ('Kevin', 'Cox');
INSERT INTO `customer` (`first_name`, `family_name`) VALUES ('Smith', 'Abel');
INSERT INTO `customer` (`first_name`, `family_name`) VALUES ('Ken', 'Dean');
INSERT INTO `customer` (`first_name`, `family_name`) VALUES ('Tom', 'Abel');

サンプル

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ColumnListHandler;

public class SampleDbUtils {

  public static void main(String[] args) {
    SampleDbUtils sample = new SampleDbUtils();
    sample.execute();
  }

  public void execute() {
    try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb", "root",
        "password")) {
      QueryRunner queryRunner = new QueryRunner();
      ColumnListHandler<String> columnListHandler = new ColumnListHandler<String>(1);
      List<String> results = queryRunner.query(connection, "SELECT DISTINCT c.first_name FROM customer AS c",
          columnListHandler);
      for (String result : results) {
        System.out.println(result);
      }
    } catch (SQLException ex) {
      ex.printStackTrace();
    }
  }
}

出力結果

Mike
Ken
Kevin
Smith
Tom

関連記事

O/Rマッパー [2] ~Apache Commons DbUtils

http://blogs.yahoo.co.jp/dk521123/34079202.html

Apache Commons DbUtils を使いやすくすることを考える

http://blogs.yahoo.co.jp/dk521123/36096631.html

Apache Commons DbUtils でJoinしたデータを扱うには...

http://blogs.yahoo.co.jp/dk521123/36128075.html