BeanPropertyRowMapper和ParameterizedBeanPropertyRowMapper有什么区别?

时间:2014-03-12 08:57:53

标签: spring spring-jdbc

我刚刚开始学习Spring(3.2.8)并遇到了这个问题:

NamedParameterJdbcTemplate jdbc = (NamedParameterJdbcTemplate)ctx.getBean("namedjdbc");

Map<String, Object> params = new HashMap<String, Object>();
params.put("rownum", 10);
params.put("variablename", "FlyMark");

List<Variable> variables = jdbc.query(
        "select materialname, variablename, variablevalue " +
        "from tbl_variables " +
        "where variablename = :variablename and rownum < :rownum",
        params,
        //BeanPropertyRowMapper.newInstance(Variable.class)
        ParameterizedBeanPropertyRowMapper.newInstance(Variable.class)
        );

似乎我将ParameterizedBeanPropertyRowMapper替换为BeanPropertyRowMapper,它也有效,并没有什么不同。

所以我的问题是:ParameterizedBeanPropertyRowMapper是为什么设计的?

1 个答案:

答案 0 :(得分:3)

从Spring 3.0开始,ParameterizedBeanPropertyRowMapperBeanPropertyRowMapper是相同的。

ParameterizedBeanPropertyRowMapper(实际上org.springframework.jdbc.core.simple包中的所有内容)是在Spring与java版本兼容的时候添加的。 1.5没有仿制药。为了解决这个限制,基本上开始出现2个类的实现(一个有一个,一个没有泛型)。

从Spring 3.0开始,最低支持的java版本已经恢复到1.5,因此单独的软件包合并到框架的核心并使这些参数化版本产生阻碍。大部分代码(例如SimpleJdbcTemplate)已弃用,或者至少应被视为已弃用。它们仍然存在向后兼容性,但可能会在Spring的下一个主要版本中删除。

链接

  1. ParameterizedRowMapper
  2. SimpleJdbcTemplate