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