我使用以下代码从结果集中提取数据。我收到了编译错误:
返回类型与SqlRowSetResultSetExtractor.extractData(ResultSet)不兼容将extractData(...)的返回类型更改为SqlRowSet
package uk.co.company.security.SQL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.SqlRowSetResultSetExtractor;
import uk.co.company.security.User;
public class UserExtractor extends SqlRowSetResultSetExtractor {
private static final Logger logger =
LoggerFactory.getLogger(UserExtractor.class);
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
return null;
}
}
根据我的研究here,应该没问题。这对我来说也很适合我和spring mvc。我现在将我的代码移动到Spring Boot。没有什么重大变化。想知道它是否与Spring Boot有关或者是否搞砸了我现有的代码。
答案 0 :(得分:0)
您应该实施SqlRowSetResultSetExtractor
,而不是扩展ResultSetExtractor
。您应该首先做的是SqlRowSetResultSetExtractor
JdbcTemplate
用于queryForRowSet
方法,不应该进行扩展。
从Spring 3.0开始,ResultSetExtrator
是通用的,读取ResultSetExtractor<T>
,而SqlRowSetResultSetExtractor
会导致ResultSetExtractor<SqlRowSet>
,然后当像你一样覆盖方法时,你会得到一个汇编异常为Object
!= SqlRowSet
。
简而言之,就像预期的那样实施ResultSetExtractor
。
public UserExtractor implements ResultSetExtractor<User> {
public User extractData(ResultSet rs) throws SQLException, DataAccessException { ... }
}