WEB开发网
开发学院数据库DB2 使用 Spring 框架调用 DB2 存储过程 阅读

使用 Spring 框架调用 DB2 存储过程

 2008-09-09 16:30:07 来源:WEB开发网   
核心提示: org.springframework.jdbc.core.SqlOutParameter ResultSetSupportingSqlParameter的子类,用来代表存储过程的输出参数,使用 Spring 框架调用 DB2 存储过程(6), org.springframework.jd

org.springframework.jdbc.core.SqlOutParameter ResultSetSupportingSqlParameter的子类,用来代表存储过程的输出参数。

org.springframework.jdbc.core.SqlReturnResultSet ResultSetSupportingSqlParameter的子类,用来代表调用存储过程的输出结果集。

org.springframework.jdbc.core.RowMapper 这是一个接口,通常为JdbcTemplate的查询方法或者存储过程返回结果集使用。

了解了Spring为我们提供的这些关于存储过程的方法和接口后,来看看具体的实现方法。如清单10所示。SearchDAOImpl.java中有三个内部类,其中SearchCustomersProcedure来负责声明数据库连接和存储过程名(2)、输入参数(6)、输出参数(5)以及输出结果集(3)(4),DemoRowMapper和DemoRowMapper2来负责取得结果集中的数据。其中(3)创建一个名为"resultSet"的结果集,通过DemoRowMapper(7)来取得结果集中的数据,当有多个结果集的时候需要重复这个过程,如(6)(8)。最后由execute方法(1)填入输入参数并执行存储过程调用。

清单10. Code in SearchDAOImpl.java.

public Map execute(String custNum) {
    SearchCustomersProcedure sp = new SearchCustomersProcedure(dataSource);
    Map map = new HashMap(1);
    map.put("piCust_num", custNum);
    Map results = sp.execute(map);       |(1)
    return results;
}
private class SearchCustomersProcedure extends StoredProcedure {
  SearchCustomersProcedure(DataSource dataSource) {
    super(dataSource, sprocName);        |(2) 
    declareParameter(new SqlReturnResultSet("resultSet",
        new DemoRowMapper()));   |(3)
    declareParameter(new SqlReturnResultSet("resultSet2",
        new DemoRowMapper2()));   |(4)
    declareParameter(new SqlOutParameter("poGenStatus", Types.INTEGER)); 
    |(5)
    declareParameter(new SqlParameter("piCust_num", Types.VARCHAR)); 
    |(6)  }
}
private class DemoRowMapper implements RowMapper {     |(7)
  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    Customer customer = new Customer();
    customer.setCustNum(rs.getString(1));
    customer.setCustName(rs.getString(2));
    return customer;
  }
}
private class DemoRowMapper2 implements RowMapper {     |(8)
  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    Customer customer = new Customer();
    customer.setCustName(rs.getString(1));
    customer.setCustNum(rs.getString(2));
customer.setCustAddress(rs.getString(3));
    customer.setCustCity(rs.getString(4));
    customer.setCustCountry(rs.getString(5));
    return customer;
  }
}

6. 在Web页面上显示结果集 (使用DisplayTag)

在SearchAction从SearchDAOImpl取得数据以后,将数据以attribute方式存入request中,如清单11中(1)(2)所示。在页面中使用DisplayTag将request中的数据以表格形式显示出来。可以指定列名或者按某些列排序,如清单12中(1);也可以不做任何处理,只是将数据显示出来,如清单12中(2)。可以在DisplayTag Homepage得到更多关于DisplayTag的详细信息。

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 Spring 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接