2014-06-15 2 views
0

ResultSetExtractor을 사용하는 방법에 대한 데모를 시도했지만 제대로 작동하지 않습니다. 나는 어떻게 link 일 후 당황 스럽네요, 충분히 명확 비록jdbcTemplate의 ResultSetExtractor가 컴파일 오류를 던지고

The method update(String, Object[], int[]) in the type JdbcTemplate is not applicable for the arguments (new PreparedStatementCreator(){}, new PreparedStatementSetter(){}, new ResultSetExtractor(){})

:

public String retrieveDeptName(final int deptId){ 
    String deptName = (String)jdbcTemplate.update(new PreparedStatementCreator() { 

     @Override 
     public PreparedStatement createPreparedStatement(Connection con) 
       throws SQLException {    
      return con.prepareStatement(SELECT_DEPT); 
     } 
    }, new PreparedStatementSetter() {   
     @Override 
     public void setValues(PreparedStatement ps) throws SQLException { 
      ps.setInt(1, deptId); 
     } 
    },new ResultSetExtractor() { 
     @Override 
     public Object extractData(ResultSet rs) throws SQLException, 
       DataAccessException {    
      if (rs.next()) { 
       return rs.getLong(2); 
      }    
      return null; 
     } 
    }); 

    System.out.println(deptName); 
} 

오류는 다음과 같습니다 아래

내가 노력 코드입니다?

상담하십시오. 유형 JdbcTemplate에서

답변

1

방법 update(String, Object[], int[])은 인수 (new PreparedStatementCreator(){}, new PreparedStatementSetter(){}, new ResultSetExtractor(){})

메시지는 매우 분명하다 적용되지 않습니다. 내가 어떻게 link 작품을 다음 놀란다 충분히 명확 비록

int update(PreparedStatementCreator psc) 
int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) 
int update(PreparedStatementCreator psc, PreparedStatementSetter pss)   
int update(String sql) 
int update(String sql, Object... args) 
int update(String sql, Object[] args, int[] argTypes) 
int update(String sql, PreparedStatementSetter pss) 

: 당신이 API for JdbcTemplate 보면, 당신은 그 세 가지 매개 변수 유형을 취하는 update 방법 없습니다가 볼 수 있습니까?

예제를 사용 update하지 않습니다, 그것은 않습니다 그 인수 과부하이있는, query를 사용합니다.

T query(PreparedStatementCreator psc, PreparedStatementSetter pss, ResultSetExtractor<T> rse) 
1

귀하의 코드는 update 방법

String deptName = (String)jdbcTemplate.update(new PreparedStatementCreator() { 

및 쿼리 SELECT_DEPT, 업데이트, 선택을하고를 사용하여 더 읽을 수 있도록, 코드에 리팩토링을합니까? 그것은 의미가 없습니다.

JdbcTemplate을쿼리 방법이 있고 지원 또는 ResultSetExtractor와 함께 작동 할 수

관련 문제