
 /** *//**
/** *//**  
 使用三种Callback接口作为参数的query方法的返回值不同:
使用三种Callback接口作为参数的query方法的返回值不同:   
 以ResultSetExtractor作为方法参数的query方法返回Object型结果,要使用查询结果,我们需要对其进行强制转型;
以ResultSetExtractor作为方法参数的query方法返回Object型结果,要使用查询结果,我们需要对其进行强制转型;   
 以RowMapper接口作为方法参数的query方法直接返回List型的结果;
以RowMapper接口作为方法参数的query方法直接返回List型的结果;   
 以RowCallbackHandler作为方法参数的query方法,返回值为void;
以RowCallbackHandler作为方法参数的query方法,返回值为void;  
 RowCallbackHandler和RowMapper才是我们最常用的选择
RowCallbackHandler和RowMapper才是我们最常用的选择   
 * @author Administrator
 * @author Administrator  
 *
 *   
 */
 */  

 public class SpringTest
public class SpringTest  {
{   

 /** *//**
 /** *//**  
 * 返回结果是List里装Map,使用参数,使用回调 RowMapperResultSetExtractor用于处理单行记录,
  * 返回结果是List里装Map,使用参数,使用回调 RowMapperResultSetExtractor用于处理单行记录,  
 * 它内部持有一个RowMapper实例的引用,当处理结果集的时候, 会将单行数据的处理委派给其所持有的RowMapper实例,而其余工作它负责
  * 它内部持有一个RowMapper实例的引用,当处理结果集的时候, 会将单行数据的处理委派给其所持有的RowMapper实例,而其余工作它负责  
 */
  */  

 public void getListRowMapperResultSetExtractor()
 public void getListRowMapperResultSetExtractor()  {
{   
 ApplicationContext context = new FileSystemXmlApplicationContext(
  ApplicationContext context = new FileSystemXmlApplicationContext(   
 "src/database_config.xml");
    "src/database_config.xml");   
 // E:\demoworkspace\spring 为工程主目录
  // E:\demoworkspace\spring 为工程主目录   
 JdbcTemplate jt = new JdbcTemplate((DataSource) context
  JdbcTemplate jt = new JdbcTemplate((DataSource) context   
 .getBean("oracleDataSourceTest")); // 测试用的方法
    .getBean("oracleDataSourceTest")); // 测试用的方法   

 Object[] arg = new Object[]
  Object[] arg = new Object[]  { 10 };
{ 10 };   
 List list = (ArrayList) jt.query("select * from region where rownum<?",
  List list = (ArrayList) jt.query("select * from region where rownum<?",   

 arg, new RowMapperResultSetExtractor(new RowMapper()
    arg, new RowMapperResultSetExtractor(new RowMapper()  {
{   
 public Object mapRow(ResultSet rs, int index)
     public Object mapRow(ResultSet rs, int index)   

 throws SQLException
       throws SQLException  {
{   
 Map u = new HashMap(); //可以是自己的JavaBean值对象(简单Java对象POJO)
      Map u = new HashMap(); //可以是自己的JavaBean值对象(简单Java对象POJO)   
 u.put("region_id", rs.getString("region_id"));
      u.put("region_id", rs.getString("region_id"));   
 u.put("region_name", rs.getString("region_name"));
      u.put("region_name", rs.getString("region_name"));   
 return u;
      return u;   
 }
     }   
 }));
    }));   
 Iterator it = list.iterator();
  Iterator it = list.iterator();   

 while (it.hasNext())
  while (it.hasNext())  {
{   
 Map map = (Map) it.next();
   Map map = (Map) it.next();   
 System.out.println(map.toString());
   System.out.println(map.toString());   
 }
  }   
 }
 }   
 
  
 
  

 /** *//**返回结果是List里装Map,不使用参数,使用回调
 /** *//**返回结果是List里装Map,不使用参数,使用回调  
 使用RowMapper比直接使用ResultSetExtractor要方便的多,只负责处理单行结果就行,现在,我们只需要将单行的结果组装后返回就行,
  使用RowMapper比直接使用ResultSetExtractor要方便的多,只负责处理单行结果就行,现在,我们只需要将单行的结果组装后返回就行,  
 剩下的工作,全部都是JdbcTemplate内部的事情了。 实际上,JdbcTemplae内部会使用一个ResultSetExtractor实现类来做其余的工作,
  剩下的工作,全部都是JdbcTemplate内部的事情了。 实际上,JdbcTemplae内部会使用一个ResultSetExtractor实现类来做其余的工作,  
 毕竟,该做的工作还得有人做不是?!
  毕竟,该做的工作还得有人做不是?!    
 */
  */  

 public void getListRowMapper()
 public void getListRowMapper()  {
{   
 ApplicationContext context = new FileSystemXmlApplicationContext(
  ApplicationContext context = new FileSystemXmlApplicationContext(   
 "src/database_config.xml");
    "src/database_config.xml");   
 JdbcTemplate jt = new JdbcTemplate((DataSource) context
  JdbcTemplate jt = new JdbcTemplate((DataSource) context   
 .getBean("oracleDataSourceTest"));
    .getBean("oracleDataSourceTest"));   
 List list = jt.query(
  List list = jt.query(   

 "select * from region where rownum<10", new RowMapper()
    "select * from region where rownum<10", new RowMapper()  {
{   
 public Object mapRow(ResultSet rs, int index)
     public Object mapRow(ResultSet rs, int index)   

 throws SQLException
       throws SQLException  {
{   
 Map u = new HashMap();
      Map u = new HashMap();   
 u.put("region_id", rs.getString("region_id"));
      u.put("region_id", rs.getString("region_id"));   
 u.put("region_name", rs.getString("region_name"));
      u.put("region_name", rs.getString("region_name"));   
 return u;
      return u;   
 }
     }   
 });
    });   
 Iterator it = list.iterator();
  Iterator it = list.iterator();   

 while (it.hasNext())
  while (it.hasNext())  {
{   
 Map map = (Map) it.next();
   Map map = (Map) it.next();   
 System.out.println(map.toString());
   System.out.println(map.toString());   
 }
  }   
 }
 }   
 
  
 // 返回记录集
 // 返回记录集   

 /** *//**
 /** *//**  
 RowCallbackHandler虽然与RowMapper同是处理单行数据,不过,除了要处理单行结果,它还得负责最终结果的组装和获取工作,
  RowCallbackHandler虽然与RowMapper同是处理单行数据,不过,除了要处理单行结果,它还得负责最终结果的组装和获取工作,  
 在这里我们是使用当前上下文声明的List取得最终查询结果, 不过,我们也可以单独声明一个RowCallbackHandler实现类,
  在这里我们是使用当前上下文声明的List取得最终查询结果, 不过,我们也可以单独声明一个RowCallbackHandler实现类,  
 在其中声明相应的集合类,这样,我们可以通过该RowCallbackHandler实现类取得最终查询结果
  在其中声明相应的集合类,这样,我们可以通过该RowCallbackHandler实现类取得最终查询结果   
 */
  */  

 public void getListRowCallbackHandler()
 public void getListRowCallbackHandler()  {
{   
 ApplicationContext context = new FileSystemXmlApplicationContext(
  ApplicationContext context = new FileSystemXmlApplicationContext(   
 "src/database_config.xml");
    "src/database_config.xml");   
 
  
 JdbcTemplate jt = new JdbcTemplate((DataSource) context
  JdbcTemplate jt = new JdbcTemplate((DataSource) context   
 .getBean("oracleDataSourceTest"));
    .getBean("oracleDataSourceTest"));   
 String sql = "select * from region  where region_id>?";
  String sql = "select * from region  where region_id>?";   
 final List<Map> list=new ArrayList<Map>(); //一定要用final定义
  final List<Map> list=new ArrayList<Map>(); //一定要用final定义   

 Object[] params = new Object[]
  Object[] params = new Object[]  { 0 };
{ 0 };   

 jt.query(sql, params, new RowCallbackHandler()
  jt.query(sql, params, new RowCallbackHandler()  {
{   

 public void processRow(ResultSet rs) throws SQLException
   public void processRow(ResultSet rs) throws SQLException  {
{   
 Map u = new HashMap();
    Map u = new HashMap();     
 u.put("region_id", rs.getString("region_id"));
    u.put("region_id", rs.getString("region_id"));   
 u.put("region_name", rs.getString("region_name"));
    u.put("region_name", rs.getString("region_name"));   
 list.add(u);
    list.add(u);   
 }
   }   
 });
  });   
 
     
 Iterator it = list.iterator();
  Iterator it = list.iterator();   

 while (it.hasNext())
  while (it.hasNext())  {
{   
 Map map = (Map) it.next();
   Map map = (Map) it.next();   
 System.out.println(map.toString());
   System.out.println(map.toString());   
 }
  }   
 }
 }posted on 2010-03-10 10:27 
J2EE学习笔记 阅读(578) 
评论(0)  编辑  收藏  所属分类: 
转载 、
spring