java 代码
- 一。 在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);
- }