하나의 테이블에 대한 SELECT가아닌, JOIN을 통한 SELECT문이거나, 레코드가 여러개 나오거나한다면 RowMapper나 BeanPropertyRowMapper보다 ResultSetExtrator가 나을수있다. 또한 queryForObject는 결과가 무조건 하나가 나와야하고 나오지않으면 예외를 던지기 때문에 또한 대안이 될수있다. (사실 예외처리는 성능저하를 불러오는 이유중 하나이기도 하다)
익명 inner클래스는 이름이 없기때문에 선언하는 자리에 new와 같이온다.
new 상위클래스 또는 인터페이스 이름(){
메서드구현
}
public ListgetAllEmployees(){ return template.query("select * from employee",new ResultSetExtractor >(){ @Override public List
extractData(ResultSet rs) throws SQLException, DataAccessException { List list=new ArrayList (); while(rs.next()){ Employee e=new Employee(); e.setId(rs.getInt(1)); e.setName(rs.getString(2)); e.setSalary(rs.getInt(3)); list.add(e); } return list; } }); } //이뒤로 무시 //
'웹 & 프레임워크' 카테고리의 다른 글
context.xml 과 jee: 네임스페이스를 이용한 jdbc설정 (0) | 2014.05.08 |
---|---|
JDBC템플릿을 쓰기위한 스프링 xml 설정 (0) | 2014.05.08 |
methodNameResolver 설정 (0) | 2014.05.08 |
현재 디렉토리 (contextPath) EL로 얻어오기 (0) | 2014.05.08 |
PHP-mysql quotation (작은따옴표) 유의 (0) | 2014.05.08 |