Spring+NamedParameterJdbcTemplate+NamedParameterJdbcDaoSupport+JDBC 命名参数支持

标准的JDBC API对命名参数并不支持,Spring对其进行了扩展

配置文件配置的时候,需要一个JdbcTemplate或者DataSource。

如下:

 <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
   <constructor-arg ref="jdbcTemplate"></constructor-arg>
  </bean>

或者:

 <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
   <constructor-arg ref="dataSource"></constructor-arg>
  </bean>

示例代码如下:

ListableBeanFactory context = new ClassPathXmlApplicationContext(
    "beans.xml");
  //GenericBeanFactoryAccessor dbfa = new GenericBeanFactoryAccessor(context);
  NamedParameterJdbcTemplate jdbc = (NamedParameterJdbcTemplate) context.getBean("namedParameterJdbcTemplate");
  Map<String,String> map = new HashMap<String,String>();
  map.put("name", "李度");
  SqlParameterSource sps = new MapSqlParameterSource(map);
  String sql = "select oid from porder where name=:name";
  System.out.println(jdbc.queryForList(sql, sps));
  
  Person person = new Person();
  person.setName("李度");
  sps = new BeanPropertySqlParameterSource(person);
  sql = "select oid from porder where name=:name";
  System.out.println(jdbc.queryForList(sql, sps));

其中:

MapSqlParameterSource支持Map形式

BeanPropertySqlParameterSource支持Bean的形式。

他们都继承自SqlParameterSource接口。

 

下面介绍NamedParameterJdbcDaoSupport支持类。

继承关系为:NamedParameterJdbcDaoSupport和SimpleJdbcDaoSupport继承自JdbcDaoSupport  而JdbcDaoSupport继承自DaoSupport。

JdbcDaoSupport 上面已经介绍过,他暴露了getJdbcTemplate()方法,用于获取JdbcTemplate.

NamedParameterJdbcDaoSupport简化了NamedParameterJdbcTemplate模板类的使用。

下面是:NamedParameterJdbcDaoSupportImpl继承了NamedParameterJdbcDaoSupport。 在DI容器中的配置情况。

需要传入一个:JdbcTemplate或DataSource

 <bean id="namedParameterJdbcDaoSupportImpl" class="com.spring.test.NamedParameterJdbcDaoSupportImpl">
   <property name="jdbcTemplate" ref="jdbcTemplate"></property>
  </bean>

或者:

 <bean id="namedParameterJdbcDaoSupportImpl" class="com.spring.test.NamedParameterJdbcDaoSupportImpl">
   <property name="dataSource" ref="dataSource"></property>
  </bean>

NamedParameterJdbcDaoSupportImpl这个类的示例:

public class NamedParameterJdbcDaoSupportImpl extends
  NamedParameterJdbcDaoSupport {
 public void test(){
  Person person = new Person();
  person.setName("李度");
  SqlParameterSource sps = new BeanPropertySqlParameterSource(person);
  
  String sql = "select oid from porder where name=:name";
  System.out.println(this.getNamedParameterJdbcTemplate().queryForList(sql, sps));
 }
}

测试类为:

public static void main(String[] args) {

ListableBeanFactory context = new ClassPathXmlApplicationContext(
    "beans.xml");
  //GenericBeanFactoryAccessor dbfa = new GenericBeanFactoryAccessor(context);
  NamedParameterJdbcDaoSupportImpl jdbc = (NamedParameterJdbcDaoSupportImpl) context.getBean("namedParameterJdbcDaoSupportImpl");
  jdbc.test();

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值