我刚刚开始学习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
是为什么设计的?
答案 0 :(得分:3)
从Spring 3.0开始,ParameterizedBeanPropertyRowMapper
和BeanPropertyRowMapper
是相同的。
ParameterizedBeanPropertyRowMapper
(实际上org.springframework.jdbc.core.simple
包中的所有内容)是在Spring与java版本兼容的时候添加的。 1.5没有仿制药。为了解决这个限制,基本上开始出现2个类的实现(一个有一个,一个没有泛型)。
从Spring 3.0开始,最低支持的java版本已经恢复到1.5,因此单独的软件包合并到框架的核心并使这些参数化版本产生阻碍。大部分代码(例如SimpleJdbcTemplate
)已弃用,或者至少应被视为已弃用。它们仍然存在向后兼容性,但可能会在Spring的下一个主要版本中删除。
链接