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