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

java 代码
  1. 一。  在Spring中使用JdbcTemplate进行编码只需要根据明确定义的一组契约来实现架设接口。   
  2.     PreparedStatementCreator回调接口通过给定的Connection创建一个PreparedStatement,包含SQL和任何相关   
  3. 的参数。CallableStatementCreator实现同样的处理,只不过它创建的是CallabeStatement.   
  4. RowCallbackHandler接口则从数据集的每一行中提取值   
  5.   
  6. 1.NamedParameterJdbcTemplate 类   
  7.     NamedParameterJdbcTemplate类增加了在SQL语句中使用命名参数的支持。它的内部封装啦一个变通的   
  8. JdbcTemplate,并作为其代理来完成大部分工作。如果我们需要访问其内部JdbcTemplate的实例,那么需要使用   
  9. getJdbcOperations()方法返回JdbcOperations接口   
  10. 下面是两者之间的不同之处并加以说明.   
  11.   
  12. 例  :   
  13. public int countOfActorsByFirstName(String firstName){   
  14.     String sql="select count(0) from ACTOR where first_Name=:firstName";   
  15.     NamedParameterJdbcTemplate template=new NamedParameterJdbcTemplate(this.getDataSource());   
  16.     SqlParameterSource namedParameters=new MapSqlParameterSource("first_Name",firstName);   
  17.   
  18.     return template.queryForInt(sql,namedParameters);   
  19. }   
  20.  我们也可以使用基于Map风格的名值对将命名参数传递给NamedParameterJdbcTemplate  ,它实现啦NamedParameterJdbcOperations接口   
  21.  剩下的工作将由调用该接口的相应的方法去完成.   
  22.   
  23.  public int countOfActorsByFirstName(String firstName){   
  24.     String sql="select count(0) from ACTOR where first_Name=:firstName";   
  25.     NamedParameterJdbcTemplate template=new NamedParameterJdbcTemplate(this.getDataSource());   
  26.     Map namedParameters=new HashMap();   
  27.     namedParameters.put("first_name",firstName);   
  28.   
  29.     return template.queryForInt(sql,namedParameters);   
  30. }   
  31.   
  32. 2.SimpleJdbcTemplate 类   
  33.   
  34.     SimpleJdbcTemplate类是JdbcTemplate类的一个包装器,它利用了Java 5的一些语言特性,比如Varargs   
  35. (可变参数)和Autoboxing(自动打包)。   
  36. 下面首先是使用标准的JdbcTemplate进行数据访问,最后再使用SimpleJdbcTemplate 做同样的事就可以看出它的方便   
  37. 之处啦。   
  38.   
  39. 例: 用JdbcTemplate   
  40.   
  41. public Actor FindActor(Long id){   
  42.     String sql="select id,first_name,last_name from T_Actor where id=?";   
  43.     RowMapper mapper=new RowMapper(){   
  44.         public Object mapRow(ResultSet rs,int rowNum) throws SQLException{   
  45.   
  46.         Actor actor=new Actor();   
  47.         actor.setId(rs.getLong(Long.valueOf(rs.getLong("id"))));   
  48.         actor.setFirstName(rs.getString("first_name"));   
  49.         actor.setLastName(rs.getString("last_name"));   
  50.   
  51.         return actor;   
  52.         }   
  53.     };   
  54.     JdbcTemplate jdbcTemplate=new JdbcTemplate(this.getDataSource());   
  55.   
  56.     return (Actor) JdbcTemplate.queryForObject(sql,mapper,new Object[]{Long.valueOf(id)});   
  57. }   
  58.   
  59. 用 SimpleJdbcTemplate 类   
  60.   
  61. public Actor FindActor(Long id){   
  62.     String sql="select id,first_name,last_name from T_Actor where id=?";   
  63.     ParameterizedRowMapper<Actor> mapper=new ParameterizedRowMapper<Actor>(){   
  64.   
  65.         public Actor mapRow(ResultSet rs,int rowNum) throws SQLException{   
  66.   
  67.         Actor actor=new Actor();   
  68.         actor.setId(rs.getLong("id"));   
  69.         actor.setFirstName(rs.getString("first_name"));   
  70.         actor.setLastName(rs.getString("last_name"));   
  71.   
  72.         return actor;   
  73.         }   
  74.     };   
  75.     SimpleJdbcTemplate simpleJdbcTemplate=new SimpleJdbcTemplate(this.getDataSource());   
  76.   
  77.     return (Actor) simpleJdbcTemplate.queryForObject(sql,mapper,id);   
  78. }   
  79.   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值