2017-11-29 31 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

그것은 불가능합니다.

: 당신은 자바 8을 사용하는 경우

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

당신이 Collector를 사용할 수 있습니다 List 그렇게 jdbcTemplate.query에서 반환하여 Map 각 키는 학생의 ID 인 상태 필요 당신은 당신에게 주시는 조작해야합니다

Map<Integer, Student> result = studentsList.stream().collect(Collectors.toMap(Student::getId, Function.identity())); 
0

query 대신 queryForMap을 사용하십시오. 열 이름별로 매핑해야하는 경우 문제가 해결됩니다.

문서 : 당신 같은 쿼리에서 Map을 얻기 위해 queryForMap

+0

은 queryForMap이 아니며 여러 행이 아닌 하나의 행을 가져 오는 데에만 사용됩니까? –