Java jdbcTemplate中的ResultsTextRactor引发编译错误

Java jdbcTemplate中的ResultsTextRactor引发编译错误,java,spring,spring-3,jdbctemplate,Java,Spring,Spring 3,Jdbctemplate,我正在试用一个演示如何使用ResultSetExtractor,但我无法让它工作 下面是我尝试的代码: public String retrieveDeptName(final int deptId){ String deptName = (String)jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPrepare

我正在试用一个演示如何使用
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中的方法更新(String,Object[],int[])不适用于参数(new PreparedStatementCreator(){},new PreparedStatementSetter(){},new ResultSetTextRactor(){})

虽然很清楚,但我很惊讶这是怎么回事

请给我一些建议

类型
JdbcTemplate
中的方法
update(String,Object[],int[])
不适用于参数(
new PreparedStatementCreator(){},new PreparedStatementSetter(){},new ResultSetExtractor(){}

信息非常清楚。如果查看,可以看到没有采用这三种参数类型的
update
方法:

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) 

虽然很清楚,但我很惊讶这是怎么回事

该示例不使用
update
,而是使用
query
,这确实会导致这些参数过载

 T query(PreparedStatementCreator psc, PreparedStatementSetter pss, ResultSetExtractor<T> rse) 
T查询(PreparedStatementCreator psc、PreparedStatementSetter pss、ResultsTextRactor rse)

对代码进行重构,以提高可读性

您的代码使用
update
方法

String deptName = (String)jdbcTemplate.update(new PreparedStatementCreator() {
您正在执行查询,选择部门,更新并选择?这毫无意义

JdbcTemplate具有query方法,它支持或能够使用ResultSetExtractor