【Spring MVC】Spring JDBCを使ったDBアクセス(queryForMap、queryForListの使い方)

概要

データアクセスフレームワークであるSpring JDBCを使用する方法についてまとめた。
当記事では、JdbcTemplateのSELECT処理であるqueryForMapqueryForListメソッドの使い方について紹介する。

 

前提

以下の記事の続きとなる。

JdbcTemplateを使用するための準備

概要 データアクセスフレームワークであるSpring JDBCを使用して、H2DBにアクセスする方法についてまとめた。 当記事ではSpring JDBCの特徴と、H2DBにアクセスするための準備方法について紹介する。  […]

【Spring MVC】Spring JDBCを使ったDBアクセス(準備)
DAOの作成方法

概要 データアクセスフレームワークであるSpring JDBCを使用する方法についてまとめた。 当記事ではDAOの作成と、DBアクセスの動確を行う方法について紹介する。 ※尚、DAOパターンとは何かについての説明は割愛する &n[…]

【Spring MVC】Spring JDBCを使ったDBアクセス(DAOの作成と動確方法)

 

queryForMap

JdbcTemplate.queryForMapメソッドの特徴と使い方について紹介する。

特徴

1レコード分のデータを取得し、その結果をMap<String, Object>で返却する。
テーブルのカラム名が文字列、値がオブジェクトになる。
値を取り出す際には、適宜キャストを行う。

尚、データを取得できない場合や2行以上のデータを取得した場合はqueryForObjectと同様の例外をスローする

queryForObjectの使い方

概要 データアクセスフレームワークであるSpring JDBCを使用する方法についてまとめた。 当記事では、JdbcTemplateのSELECT処理であるqueryForObjectメソッドの使い方について紹介する。  […]

【Spring MVC】Spring JDBCを使ったDBアクセス(queryForObjectの使い方)

 

使い方

JdbcTemplate.queryForMapメソッドは以下のように使用する。

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,芸術に秀でる

 

スポンサーリンク