[SPRING] JDBCTemplate.queryForMap을 사용하여지도 데이터를 얻는 방법
SPRINGJDBCTemplate.queryForMap을 사용하여지도 데이터를 얻는 방법
JDBCTemplate.queryForMap ()에서 데이터를로드하는 방법 및지도 Interface.How 내부적으로 map.I 내에서 유지 관리하는 방법을로드합니다.하지만 예외, 즉 org.springframework.dao.IncorrectResultSizeDataAccessException : 잘못된 결과
암호:-
public List getUserInfoByAlll() {
List profilelist=new ArrayList();
Map m=new HashMap();
m=this.jdbctemplate.queryForMap("SELECT userid,username FROM USER");
Set s=m.keySet();
Iterator it=s.iterator();
while(it.hasNext()){
String its=(String)it.next();
Object ob=(Object)m.get(its);
log.info("UserDAOImpl::getUserListSize()"+ob);
}
return profilelist;
}
Plz 도와주세요
해결법
-
==============================
1.queryForMap은 단일 행을 가져 오려면 적절합니다. where 절없이 선택하기 때문에 아마도 queryForList를 원할 것입니다. 이 오류는 queryForMap이 한 행을 원하지만 조회가 많은 행을 검색하고 있다는 사실을 나타낼 수 있습니다.
queryForMap은 단일 행을 가져 오려면 적절합니다. where 절없이 선택하기 때문에 아마도 queryForList를 원할 것입니다. 이 오류는 queryForMap이 한 행을 원하지만 조회가 많은 행을 검색하고 있다는 사실을 나타낼 수 있습니다.
문서를 확인하십시오. 그냥 SQL을 사용하는 queryForList가 있습니다. 반환 유형은
List
따라서 결과를 얻으면 자신이하는 일을 할 수 있습니다. 나는 뭔가를 할 것입니다.
List results = template.queryForList(sql); for (Map m : results){ m.get('userid'); m.get('username'); }
세부 사항을 채우 겠지만,이 경우 키를 반복하지는 않습니다. 나는 내가 기대하는 바를 분명히 밝힙니다.
User 객체가 있고 실제로 User 인스턴스를로드하려는 경우 sql과 클래스 유형을 사용하는 queryForList를 사용할 수 있습니다.
queryForList (String sql, Class
elementType) (내가 Javaland를 떠난 이래로 봄이 많이 바뀌었다.)
-
==============================
2.나는 이것이 정말로 오래되었음을 알고 있지만 이것은 Map을 쿼리하는 가장 간단한 방법이다.
나는 이것이 정말로 오래되었음을 알고 있지만 이것은 Map을 쿼리하는 가장 간단한 방법이다.
ResultSetExtractor 인터페이스를 구현하여 리턴 할 유형을 정의하십시오. 다음은 이것을 사용하는 방법의 예입니다. 수동으로 맵핑 할 것이지만 간단한 맵의 경우 간단해야합니다.
jdbcTemplate.query("select string1,string2 from table where x=1", new ResultSetExtractor<Map>(){ @Override public Map extractData(ResultSet rs) throws SQLException,DataAccessException { HashMap<String,String> mapRet= new HashMap<String,String>(); while(rs.next()){ mapRet.put(rs.getString("string1"),rs.getString("string2")); } return mapRet; } });
이렇게하면지도의 목록이 아닌 여러 행 (쿼리가 반환되는 경우가 많음)이있는 반환 유형의 Map이 제공됩니다. 여기에서 ResultSetExtractor 문서를 볼 수 있습니다. http://docs.spring.io/spring-framework/docs/2.5.6/api/org/springframework/jdbc/core/ResultSetExtractor.html
-
==============================
3.@ BrianBeech의 대답에 덧붙이 자면, 이것은 자바 8에서 더 잘 다듬어졌다.
@ BrianBeech의 대답에 덧붙이 자면, 이것은 자바 8에서 더 잘 다듬어졌다.
jdbcTemplate.query("select string1,string2 from table where x=1", (ResultSet rs) -> { HashMap<String,String> results = new HashMap<>(); while (rs.next()) { results.put(rs.getString("string1"), rs.getString("string2")); } return results; });
from https://stackoverflow.com/questions/10029785/how-to-get-map-data-using-jdbctemplate-queryformap by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] HttpServletRequestWrapper, setReadListener 예제 구현 / isFinished / isReady? (0) | 2019.03.05 |
---|---|
[SPRING] XML Bean은 Spring Boot 애플리케이션에 어디에 넣어야합니까? (0) | 2019.03.05 |
[SPRING] HTML과 JSON 요청에 대해 Spring MVC에서 예외를 다르게 처리하는 방법 (0) | 2019.03.04 |
[SPRING] Joda DateTime을 ISO 8601 형식으로 자동 포맷 (0) | 2019.03.04 |
[SPRING] Spring MVC 테스트 @ExceptionHandler 메소드 (0) | 2019.03.04 |