一、简介
jdbcTemplate只是提供了一些操作jdbc的基本的api, namedParameterJdbcTemplate支持具名参数(形如:name)
具名参数相对于?
的处理更加人性化,阅读性也更好
二、示例
- jdbcTemplate 操作数据示例
public int addPay2(Pay pay){ String ADDPAY = "insert into pay (product, product_id, buyer, price, number, total_amount) " + "values (?, ?, ?, ?, ?, ?)"; return jdbcTemplate.update(ADDPAY, new PreparedStatementSetter() { @Override public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, pay.getProduct()); ps.setLong(2, pay.getProductId()); ps.setString(3, pay.getBuyer()); ps.setBigDecimal(4, pay.getPrice()); ps.setInt(5, pay.getNumber()); ps.setBigDecimal(6, pay.getTotalAmount()); } }); }
- namedParameterJdbcTemplate 操作数据库示例
public int addPay(Pay pay){ String ADDPAY = "insert into pay (product, product_id, buyer, price, number, total_amount) " + "values (:product, :productId, :buyer, :price, :number, :totalAmount)"; return namedParameterJdbcTemplate.update(ADDPAY, new BeanPropertySqlParameterSource(pay)); }
可以看出相对于jdbcTemplate,namedParameterJdbcTemplate更加的方便好用。
三、namedParameterJdbcTemplate的配置
namedParameterJdbcTemplate的xml配置与jdbcTemplate的基本一样,也是需要引入datasource
<!--相对于jdbcTemplate功能更加强大-->
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="datasource"/>
</bean>