Spring MVC笔记 使用JdbcTemplate

简介:

Spring提供了 JdbcTemplate 来封装数据库jdbc操作细节, 
包括: 数据库连接[打开/关闭] ,异常转义 ,SQL执行 ,查询结果的转换,

其中体现了 模板模式 的设计模式思想。

使用了Spring JdbcTemplate 之后,开发人员只需要完成其中两项编码工作。

  1. 指定数据库连接参数

  2. 打开数据库连接

  3. 声明SQL语句

  4. 预编译并执行SQL语句

  5. 遍历查询结果(如果需要的话)

  6. 处理每一次遍历操作

  7. 处理抛出的任何异常

  8. 处理事务

  9. 关闭数据库连接

Spring将替我们完成所有单调乏味的JDBC底层细节处理工作。

 

使用JdbcTemplate进行查询时,可以使用queryForXXX()等方法,例如使用queryForInt()方法传回user表格中的数据数目: jdbcTemplate.quertForInt("select count(*) from user"); 也可以使用queryForObject()传回一个查询后的对象,例如传回一个String对象:

String name=(String)jdbcTemplate.queryForObject(
             "selcet name from user where id=?",
                         new Object[]{id},
                         java.lang.String.class);
)

 

上面两个例子都是传回单独一笔数据,如果要传回多笔数据,则可以使用queryForList()方法,例如:
List rows=jdbcTemplate().queryForList("select * from user where id="+id.intValue()); 传回的list中包括的是map对象,每个map对象代表查询结果中的一笔数据,每笔数据包括多个字段,要取得字段中的值,就要使用字段名作为key,例如:

   Iterator it=rows.iterator();
   while(it.hasNext()){
       Map result=(Map)it.next();
       System.out.println(userMap.get("id"));
       System.out.println(userMap.get("name"));
       System.out.println(userMap.get("age"));
    }

 

在查询的同时,你可以在返回结果之前先进行一些处理,这就要实现RowCallbackHandler接口

public User find(Integer id){
   final User user=new User();
   jdbcTemplate.query("select * from user where id=?",new Object[]{id},
                                         new RowCallBackHandler(){
                                                public void proccessRow(ResultSet rs){ 
                                                        user.setId(new Integer(rs.getInt("id")));
                                                        uset.setName(rs.getString("name"));    
                                                 }
                                            });
   return user;
 }

如果一次要返回多个查询结果对象,则可以实现RowMapper接口

public class UserRowMapper implements RowMapper{
       public Object MapRow(ResultSet rsmint rowNum) throws SQLException{
               User user=new User();
               user.setId(new Integer(rs.getInt("id")));
               user.setName(rs.getString("name"));
               return user;
      } 
}

使用RowMapper查询单笔数据

public User find(Integer id){
        User user=(User)jdbcTemplate.queryForObject("select * from user where id=?",new Object[]{id},
                                                                                    new UserRowMapper());
         return user;

}

使用RowMapper查询多笔数据

List users=jdbcTemplate.query("select * from user",new UserRowMapper());

传回的users对象中,包括了从数据库查询出来的结果,并已经封装成uer对象。


目录
相关文章
|
6月前
|
前端开发 Java 程序员
Spring MVC面试题
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级 Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的 web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
108 1
Spring MVC面试题
|
5月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
73 1
|
前端开发 Java 应用服务中间件
Spring MVC入门
Spring MVC入门
70 0
|
6月前
|
JSON 前端开发 Java
Spring MVC常见面试题总结
Spring MVC常见面试题总结
45 0
|
设计模式 JSON 前端开发
Spring MVC面试题1
Spring MVC面试题
69 0
|
JSON 监控 前端开发
Spring MVC面试题2
Spring MVC面试题2
56 0
|
XML JSON 前端开发
Spring MVC-03循序渐进之Spring MVC
Spring MVC-03循序渐进之Spring MVC
72 0
|
前端开发 Java 开发者
Spring MVC 介绍 | 学习笔记
快速学习 Spring MVC 介绍。
104 1
Spring MVC 介绍 | 学习笔记
|
XML 存储 JSON
Spring MVC详解(学习总结)
Spring MVC详解(学习总结)
Spring MVC详解(学习总结)
|
Web App开发 JSON 前端开发