概要
データアクセスフレームワークであるSpring JDBCを使用する方法についてまとめた。
当記事では、JdbcTemplateのSELECT処理であるqueryForMapとqueryForListメソッドの使い方について紹介する。
前提
以下の記事の続きとなる。
概要 データアクセスフレームワークであるSpring JDBCを使用して、H2DBにアクセスする方法についてまとめた。 当記事ではSpring JDBCの特徴と、H2DBにアクセスするための準備方法について紹介する。 […]
概要 データアクセスフレームワークであるSpring JDBCを使用する方法についてまとめた。 当記事ではDAOの作成と、DBアクセスの動確を行う方法について紹介する。 ※尚、DAOパターンとは何かについての説明は割愛する &n[…]
queryForMap
JdbcTemplate.queryForMapメソッドの特徴と使い方について紹介する。
特徴
1レコード分のデータを取得し、その結果をMap<String, Object>で返却する。
テーブルのカラム名が文字列、値がオブジェクトになる。
値を取り出す際には、適宜キャストを行う。
尚、データを取得できない場合や2行以上のデータを取得した場合はqueryForObjectと同様の例外をスローする。
概要 データアクセスフレームワークであるSpring JDBCを使用する方法についてまとめた。 当記事では、JdbcTemplateのSELECT処理であるqueryForObjectメソッドの使い方について紹介する。  […]
使い方
JdbcTemplate.queryForMapメソッドは以下のように使用する。
SQL文字列,
パラメータ ※省略可,
)
使用例
実際にJdbcTemplate.queryForMapメソッドの使用例について紹介する。
インターフェース
StudentDao.java
/** 生徒情報(Map)を取得 */
Map<String, Object> findStudentMapById(int id);
実装
JdbcStudentDao.java
@Override
public Map<String, Object> findStudentMapById(int id) {
var sql = "SELECT id, grade, name, class_name, memo FROM student WHERE id = ?";
return jdbcTemplate.queryForMap(sql, new Object[] { id });
}
使用結果
FooMain.java
// 生徒情報(Map)を取得する
Map<String, Object> resMap = studentDao.findStudentMapById(1);
var id = (int) resMap.get("id");
var grade = (int) resMap.get("grade");
var studentName = (String) resMap.get("name");
var className = (String) resMap.get("class_name");
var memo = (String) resMap.get("memo");
// 結果表示
var result = String.format("%s,%s,%s,%s,%s", id, grade, studentName, className, memo);
System.out.println(result);
// ------------------------
// コンソール
// ------------------------
// 1,1,山田太郎,1-A,良好な成績
queryForList
JdbcTemplate.queryForListメソッドの特徴と使い方について紹介する。
特徴
複数レコード分のデータを取得し、その結果をList< Map<String, Object> >で返却する。
SQLクエリの結果が0行の場合、スローされず空のリストを返却する。
大量のデータを使用する場合、メモリ消費が問題になる可能性があるらしい。
使い方
JdbcTemplate.queryForListメソッドは以下のように使用する。
JdbcTemplate.queryForList(
SQL文字列,
パラメータ ※省略可,
)
使用例
実際にJdbcTemplate.queryForListメソッドの使用例について紹介する。
インターフェース
StudentDao.java
/** 生徒情報(Map)リストを取得 */
List<Map<String, Object>> findStudentMapAll();
実装
JdbcStudentDao.java
@Override
public List<Map<String, Object>> findStudentMapAll() {
var sql = "SELECT id, grade, name, class_name, memo FROM student";
return jdbcTemplate.queryForList(sql);
}
使用結果
FooMain.java
// 生徒情報(Map)リストを取得する
List<Map<String, Object>> studentList = studentDao.findStudentMapAll();
studentList.forEach(sMap -> {
var sId = (int) sMap.get("id");
var sGrade = (int) sMap.get("grade");
var sStudentName = (String) sMap.get("name");
var sClassName = (String) sMap.get("class_name");
var sMemo = (String) sMap.get("memo");
// 結果表示
var sResult = String.format("%s,%s,%s,%s,%s", sId, sGrade, sStudentName, sClassName, sMemo);
System.out.println(sResult);
});
// ------------------------
// コンソール
// ------------------------
// 1,1,山田太郎,1-A,良好な成績
// 2,2,佐藤花子,2-B,スポーツ万能
// 3,3,鈴木一郎,3-C,芸術に秀でる