Spring 中的与 JdbcTemplate 相关的类的用法 学习笔记一

一。  在Spring中使用JdbcTemplate进行编码只需要根据明确定义的一组契约来实现架设接口。   
    PreparedStatementCreator回调接口通过给定的Connection创建一个PreparedStatement,包含SQL和任何相关   
的参数。CallableStatementCreator实现同样的处理,只不过它创建的是CallabeStatement.   
RowCallbackHandler接口则从数据集的每一行中提取值   
  
1.NamedParameterJdbcTemplate 类   
    NamedParameterJdbcTemplate类增加了在SQL语句中使用命名参数的支持。它的内部封装啦一个变通的   
JdbcTemplate,并作为其代理来完成大部分工作。如果我们需要访问其内部JdbcTemplate的实例,那么需要使用   
getJdbcOperations()方法返回JdbcOperations接口   
下面是两者之间的不同之处并加以说明.   
  
例  :   
public int countOfActorsByFirstName(String firstName){   
    String sql="select count(0) from ACTOR where first_Name=:firstName";   
    NamedParameterJdbcTemplate template=new NamedParameterJdbcTemplate(this.getDataSource());   
    SqlParameterSource namedParameters=new MapSqlParameterSource("first_Name",firstName);   
  
    return template.queryForInt(sql,namedParameters);   
}   
 我们也可以使用基于Map风格的名值对将命名参数传递给NamedParameterJdbcTemplate  ,它实现啦NamedParameterJdbcOperations接口   
 剩下的工作将由调用该接口的相应的方法去完成.   
  
 public int countOfActorsByFirstName(String firstName){   
    String sql="select count(0) from ACTOR where first_Name=:firstName";   
    NamedParameterJdbcTemplate template=new NamedParameterJdbcTemplate(this.getDataSource());   
    Map namedParameters=new HashMap();   
    namedParameters.put("first_name",firstName);   
  
    return template.queryForInt(sql,namedParameters);   
}   
  
2.SimpleJdbcTemplate 类   
  
    SimpleJdbcTemplate类是JdbcTemplate类的一个包装器,它利用了Java 5的一些语言特性,比如Varargs   
(可变参数)和Autoboxing(自动打包)。   
下面首先是使用标准的JdbcTemplate进行数据访问,最后再使用SimpleJdbcTemplate 做同样的事就可以看出它的方便   
之处啦。   
  
例: 用JdbcTemplate   
  
public Actor FindActor(Long id){   
    String sql="select id,first_name,last_name from T_Actor where id=?";   
    RowMapper mapper=new RowMapper(){   
        public Object mapRow(ResultSet rs,int rowNum) throws SQLException{   
  
        Actor actor=new Actor();   
        actor.setId(rs.getLong(Long.valueOf(rs.getLong("id"))));   
        actor.setFirstName(rs.getString("first_name"));   
        actor.setLastName(rs.getString("last_name"));   
  
        return actor;   
        }   
    };   
    JdbcTemplate jdbcTemplate=new JdbcTemplate(this.getDataSource());   
  
    return (Actor) JdbcTemplate.queryForObject(sql,mapper,new Object[]{Long.valueOf(id)});   
}   
  
用 SimpleJdbcTemplate 类   
  
public Actor FindActor(Long id){   
    String sql="select id,first_name,last_name from T_Actor where id=?";   
    ParameterizedRowMapper<Actor> mapper=new ParameterizedRowMapper<Actor>(){   
  
        public Actor mapRow(ResultSet rs,int rowNum) throws SQLException{   
  
        Actor actor=new Actor();   
        actor.setId(rs.getLong("id"));   
        actor.setFirstName(rs.getString("first_name"));   
        actor.setLastName(rs.getString("last_name"));   
  
        return actor;   
        }   
    };   
    SimpleJdbcTemplate simpleJdbcTemplate=new SimpleJdbcTemplate(this.getDataSource());   
  
    return (Actor) simpleJdbcTemplate.queryForObject(sql,mapper,id);   
}   



转载地址:http://dongguoh.iteye.com/blog/118995

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值