2017-11-29 16 views
0

私は、次の例のように、結果セットのArrayListのを取得するためにqueryForListを使用しています:複数のレコードの結果をmap intに取得する方法JDBC Template?

List<Student> studentsList = null; 
String sql = "SELECT * FROM [student]"; 
try { 
    studentsList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class)); 
} catch (EmptyResultDataAccessException e) { 
} 
return (ArrayList<Student>) studentsList; 

は今、私はキーオブジェクトのマップには、このリストの結果を取得したい直接クエリから。

アイデア?

+0

どこでもqueryForListを使用しています。 – Ravi

+0

マップでキーとして使用する予定はありますか? – mohammedkhan

+0

@mohammedkhan id、整数ID –

答えて

1

次のようなクエリからごMapを取得することは不可能です。

Map<Integer, Student> studentMap = new HashMap<Integer, Student>(); 
for (Student student : studentsList) { 
    studentMap.put(student.getId(), student); 
} 

は、Java 8を使用している場合は、Collectorを使用することができます:

あなたはそれがあなたに Mapあなたは、各キーが学生のIDであることを必要とを与えるように、あなたの ListjdbcTemplate.queryから返さ操作する必要があります
Map<Integer, Student> result = studentsList.stream().collect(Collectors.toMap(Student::getId, Function.identity())); 
0

queryの代わりにqueryForMapを使用してください。列名でマップする必要がある場合は、これで問題は解決します。

ドキュメント:queryForMap

+0

は、複数の行ではなく1つの行を取得するために使用されるqueryForMapではありませんか? –

関連する問題