是否应该使用JDBCTemplate和NamedParameterJdbcTemplate,同时使用NamedParameterJdbcTemplate来插入/更新,而JdbcTemplate则负责检索和删除?因为我可以使用简单的NamedParameterJdbcTemplate插入对象,如下所示:
public long save(Domain obj) {
String sql = "insert into domain(name,password,salt,dnspod_domain_id,status)" +
" values(:name,:password,:salt,:dnspodDomainId,:status)";
KeyHolder keyHolder = new GeneratedKeyHolder();
namedJdbc.update(sql, new BeanPropertySqlParameterSource(obj), keyHolder);
return keyHolder.getKey().longValue();
}如果我想使用JDBCTemplate将对象/数据插入到表中,我将不得不编写大量用PreparedStatement手动分配参数的代码.
当涉及到检索时,我可以通过JDBCTemplate完成它,如下所示:
List<User> users = jdbcTemplate.query("SELECT * FROM user", BeanPropertyRowMapper.newInstance(User.class));不需要使用ResultSet和RowMapper来检索行。
我担心的是,如果同时使用JDBCTemplate和NamedParameterJdbcTemplate存在任何性能问题。
发布于 2016-06-24 08:13:31
您可以在需要时同时使用JdbcTemplate和NamedParameterJdbcTemplate。JdbcTemplate稍微容易出错,因为"?“的顺序是?占位符以查询和参数顺序显示,您要通过数组或直接设置传递这些占位符。
正如NamedParameterJdbcTemplate所允许的那样,您可以根据名称为参数分配名称并将值映射到参数,这与设置值的顺序无关。
根据NamedParameterJdbcTemplate api文档,
一旦命名参数替换为JDBC样式'?‘,该类将委托给包装的JdbcTemplate。占位符在执行时完成。
因此,在内部api需要一些额外的时间来将命名的params转换为‘’位置持有者,但这可以忽略不计。
我的建议是,如果您的查询有太多的参数与NamedParameterJdbcTemplate一起使用,因为它的安全性和无错误性都适用于JdbcTemplate。
https://stackoverflow.com/questions/37997533
复制相似问题