我正在使用Spring 3.1.2开发Web应用程序,并且需要创建自定义行映射器。我已经创建了一个实现RowMapper的私有静态最终类,但是我收到错误消息“RowMapper类型不是通用的;不能使用参数对其进行参数化”。
我的lib文件夹中的所有与Spring相关的jar都是3.1.2.RELEASE版本。我一直找不到其他地方的东西。任何想法为什么会发生这种情况?
谢谢。
这是示例代码:
public class OutPatient extends Patient{
@Pattern(regexp="[0-9]+", message="OPD No. should only contain digits.")
String opdNo;
public String getOpdNo() {
return opdNo;
}
public void setOpdNo(String opdNo) {
this.opdNo = opdNo;
}
}
DAO类:
@Repository("dbHelper")
public class DBHelperImpl{
private JdbcTemplate jdbcTemplate;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
public List<OutPatient> fetchOutPatients() {
String sql = "SELECT OPDNO as opdNo FROM `test`.`out_patient`";
@SuppressWarnings("unchecked") //Have to add this annotation to prevent warning
List<OutPatient> outPatients = jdbcTemplate.query(sql, new OutPatientRowMapper());
return outPatients;
}
private static final class OutPatientRowMapper implements RowMapper{ //Unable to add <OutPatient> generics here!
public OutPatient mapRow(ResultSet rs, int rowNum) throws SQLException {
OutPatient outPatient = new OutPatient();
outPatient.setOpdNo(rs.getString("opdNo"));
return outPatient;
}
}
最佳答案
我遇到了同样的问题,Eclipse警告我RowMapper不是通用的。
因此,我手工编写了导入:
import org.springframework.jdbc.core.RowMapper;
产生此错误的位置:The import org.springframework.jdbc.core.RowMapper collides with another import statement
因此,我查看了其他导入语句以及在Spring项目中发现的潜伏之处:
import javax.swing.tree.RowMapper;
...我删除了该导入,然后一切正常进行。
关于java - Spring 3.1.2 RowMapper参数化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13819995/