springのSQL select結果を複数件取得する方法を紹介します

spring

SQLのselect文でデータを取得しようとした時に、データ件数は1件ではなく複数件取得する方が圧倒的に多いのではないでしょうか。
私はデータ1件のみというとり方をあまりしません。
今回は、SQLでデータを複数件を一度に取得する方法を紹介します。

[スポンサーリンク]

今回紹介するプログラムは、SQLのwhere句に引数を指定して取得する方法と、SQLのwhere句に指定なしの2パターンを紹介します。

この章でやること

SQLのwhere句に引数を指定して、データを複数件取得する方法を紹介します。
SQLのwhere句に指定なしで、データを複数件取得する方法を紹介します。

springでDB操作する方法

過去にDB接続方法の記事を書きました。
DB接続がまだの方は、こちらを参照して下さい。
springのDB接続方法を解説

SQLデータ複数件を取得するプログラム

@Component
public class ExampleDaoImpl implements ExampleDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Override
	public List<Map<String, Object>> find() {

		// 引数指定なし
		List<Map<String, Object>>  list1 = 
				jdbcTemplate.queryForList("select * from sample");
		for (Map<String, Object> map : list1) {
			System.out.println(map.get("id").toString());
			System.out.println(map.get("name").toString());
		}

		// 引数指定あり
		List<Map<String, Object>>  list2 = 
				jdbcTemplate.queryForList("select * from sample where id=?", 1);
		for (Map<String, Object> map : list2) {
			System.out.println(map.get("id").toString());
			System.out.println(map.get("name").toString());
		}

		return list1;
	}

}

テーブルデータ

サンプルプログラム内で使用している、テーブル構成と、insertしているデータです。

CREATE TABLE `sample` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(20) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
 
insert into sample values(1,'test');

解説

jdbcTemplate.queryForListで、リストデータが取得出来ます。
取得出来る型は、MapのListになります。

Mapを自前のデータオブジェクトに変えることも可能です。
ただし、この方法では自前のデータオブジェクトに入れることが出来ません。
次回、この方法は紹介します。

springMVCのバージョン

org.springframework-versionは、3.1.0を使っています。
javaは、1.6を使っています。

最後に

select結果を複数件を取得する方法は、DBを使っているシステムであれば、色々な場面で使うことになります。
DBを使わないシステムは非常に稀な気がしますが、、、

select結果の取得方法は基本的なところなのでしっかりとおさえておきましょう!
とはいっても、実際の業務では、jdbcTemplate.queryForListはラップされていることが多いのですよね。私もよく忘れます(笑)
それでは!