当前位置: 首页 > 知识库问答 >
问题:

ResultSetExtractor和RowMapper有什么不同?

刘选
2023-03-14

除了上面还有什么不同吗?。如何工作Rowmapper内部和返回类型是列表?。

共有1个答案

祝俊
2023-03-14

与ResultsetExtractor的基本区别在于,您需要自己遍历结果集,比如在while循环中。这个接口为您提供了一次处理整个ResultSet的功能。接口方法extractData(ResultSet rs)的implemetation将包含该手动迭代代码。参见ResultsetExtractor的一个实现

虽然有些回调处理程序如RowCallbackHandler,但接口方法processRow(ResultSet rs)为您循环。

RowMapper既可以用于映射每一行,也可以用于映射整行。

 public List findAll() {    
    String sql = "SELECT * FROM EMPLOYEE";
    return jdbcTemplate.query(sql, new EmployeeRowMapper());
} 
without casting will work

对于单个对象(使用模板方法jdbctemplate.queryforObject())

@SuppressWarnings({ "unchecked", "rawtypes" })
public Employee findById(int id) {
    String sql = "SELECT * FROM EMPLOYEE WHERE ID = ?";
//  jdbcTemplate = new JdbcTemplate(dataSource);

    Employee employee = (Employee) jdbcTemplate.queryForObject(sql,  new EmployeeRowMapper(), id );

    // Method 2 very easy
    //  Employee employee = (Employee) jdbcTemplate.queryForObject(sql, new Object[] { id }, new BeanPropertyRowMapper(Employee.class));

    return employee;
}
@SuppressWarnings("rawtypes")
public class EmployeeRowMapper implements RowMapper {

public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    Employee employee = new Employee();
    employee.setId(rs.getInt("ID"));
    employee.setName(rs.getString("NAME"));
    employee.setAge(rs.getInt("AGE"));
    return employee;
}

}

最佳用例:

 类似资料:
  • org.springframework.jdbc.core.ResultSetExtractor接口是JdbcTemplate的查询方法使用的回调接口。 此接口的实现执行从ResultSet中提取结果的实际工作,但不必担心异常处理。 调用JdbcTemplate将捕获并处理SQLExceptions。 该接口主要用于JDBC框架本身。 对于ResultSet处理,RowMapper通常是一个更简单

  • org.springframework.jdbc.core.ResultSetExtractor接口是JdbcTemplate的查询方法使用的回调接口。 此接口的实现执行从ResultSet中提取结果的实际工作,但不必担心异常处理。 调用JdbcTemplate将捕获并处理SQLExceptions。 该接口主要用于JDBC框架本身。 对于ResultSet处理,RowMapper通常是一个更简单

  • 本文向大家介绍getComputedStyle和element.style有什么不同?相关面试题,主要包含被问及getComputedStyle和element.style有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 element.style 只能获取内联样式属性 getComputedStyle() 可以获取所有样式属性

  • 本文向大家介绍frame和bounds有什么不同?相关面试题,主要包含被问及frame和bounds有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 答案:frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统) bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)  

  • 本文向大家介绍"attribute"和"property"有什么不同?相关面试题,主要包含被问及"attribute"和"property"有什么不同?时的应答技巧和注意事项,需要的朋友参考一下 property 是DOM中的属性,是JavaScript里的对象 可以读取标签自带属性,包括没有写出来的 不能读取attribute设置的属性 获取方式:读:element.property;     

  • 我知道ElasticSearch是基于Apache Lucene构建的,但我想知道两者之间的显著差异。