public ResultItem findBaseVendorDepositAccountant(GenericModel model) {
CallableStatement cstmt = null;
ResultSet rs = null;
ResultItem resultItem = new ResultItem();
String strSql = "{call SP_ACNT_BASE031R(?,?,?,?,?)}";
try {
cstmt = prepareCall(strSql);
cstmt.setString(1, (String) model.get("rowStatus")); //row status
cstmt.setString(2, (String) model.get("vendCd"));
cstmt.registerOutParameter(3, OracleTypes.CURSOR);
cstmt.registerOutParameter(4, OracleTypes.INTEGER);
cstmt.registerOutParameter(5, OracleTypes.VARCHAR);
cstmt.execute();
rs = (ResultSet) cstmt.getObject(3); resultItem.setValue(rs, 0, 0, ResultItem.NOTRIM);
//log.info("================>" + resultItem.getRowSize()); } catch (SQLException e) {
throw translateException(strSql, e); } finally {
JdbcUtils.closeStatement(cstmt);
JdbcUtils.closeResultSet(rs);
} return resultItem;
}希望每段代码都能详细说说看看~是菜鸟..谢谢
CallableStatement cstmt = null;
ResultSet rs = null;
ResultItem resultItem = new ResultItem();
String strSql = "{call SP_ACNT_BASE031R(?,?,?,?,?)}";
try {
cstmt = prepareCall(strSql);
cstmt.setString(1, (String) model.get("rowStatus")); //row status
cstmt.setString(2, (String) model.get("vendCd"));
cstmt.registerOutParameter(3, OracleTypes.CURSOR);
cstmt.registerOutParameter(4, OracleTypes.INTEGER);
cstmt.registerOutParameter(5, OracleTypes.VARCHAR);
cstmt.execute();
rs = (ResultSet) cstmt.getObject(3); resultItem.setValue(rs, 0, 0, ResultItem.NOTRIM);
//log.info("================>" + resultItem.getRowSize()); } catch (SQLException e) {
throw translateException(strSql, e); } finally {
JdbcUtils.closeStatement(cstmt);
JdbcUtils.closeResultSet(rs);
} return resultItem;
}希望每段代码都能详细说说看看~是菜鸟..谢谢
这是一段java代码,
每一行都是java语句,
就是这样<( ̄︶ ̄)/
1、2参数是in,setString赋值
3、4、5参数是out,registerOutParameter注册参数类型
cstmt.getObject是获得返回的out参数虽然代码比较简单,不过,很实用
cstmt.setString(1, (String) model.get("rowStatus")); //获取输入参数rowStatus
cstmt.setString(2, (String) model.get("vendCd")); //获取输入参数vendCd
cstmt.registerOutParameter(3, OracleTypes.CURSOR); //设置输入数据类型为游标
cstmt.registerOutParameter(4, OracleTypes.INTEGER); //设置输入数据类型为整形
cstmt.registerOutParameter(5, OracleTypes.VARCHAR); //设置输入数据类型为字符串
//此方法主要根据一个GenericModel对象实例model作为查询条件
//返回一个ResultItem对象
public ResultItem findBaseVendorDepositAccountant(GenericModel model) {
CallableStatement cstmt = null;//父接口是PreparedStatement,具体有什么方法,方法的作用可以去看API
ResultSet rs = null;
ResultItem resultItem = new ResultItem();
String strSql = "{call SP_ACNT_BASE031R(?,?,?,?,?)}";//调用ORACLE的一个过程
try {
cstmt = prepareCall(strSql);
cstmt.setString(1, (String) model.get("rowStatus")); //row status
cstmt.setString(2, (String) model.get("vendCd")); //从model取出对应值绑定到sql上
cstmt.registerOutParameter(3, OracleTypes.CURSOR);
cstmt.registerOutParameter(4, OracleTypes.INTEGER);
cstmt.registerOutParameter(5, OracleTypes.VARCHAR);
cstmt.execute();
rs = (ResultSet) cstmt.getObject(3); resultItem.setValue(rs, 0, 0, ResultItem.NOTRIM);
//log.info("================>" + resultItem.getRowSize()); } catch (SQLException e) {
throw translateException(strSql, e); } finally {
JdbcUtils.closeStatement(cstmt);
JdbcUtils.closeResultSet(rs);
} return resultItem;
}
//返回一个ResultItem对象
public ResultItem findBaseVendorDepositAccountant(GenericModel model) {
CallableStatement cstmt = null;//父接口是PreparedStatement,具体有什么方法,方法的作用可以去看API
ResultSet rs = null;
ResultItem resultItem = new ResultItem();
String strSql = "{call SP_ACNT_BASE031R(?,?,?,?,?)}";//调用ORACLE的一个过程
try {
cstmt = prepareCall(strSql);
cstmt.setString(1, (String) model.get("rowStatus")); //设置SQL语句的参数rowStatus
cstmt.setString(2, (String) model.get("vendCd")); //设置SQL语句的参数vendCd
cstmt.registerOutParameter(3, OracleTypes.CURSOR); //设置输入数据类型为游标
cstmt.registerOutParameter(4, OracleTypes.INTEGER); //设置输入数据类型为整形
cstmt.registerOutParameter(5, OracleTypes.VARCHAR); //设置输入数据类型为字符串 cstmt.execute();//执行SQL语句,即是存储过程
rs = (ResultSet) cstmt.getObject(3);//取结果集 resultItem.setValue(rs, 0, 0, ResultItem.NOTRIM);//保存结果集
//log.info("================>" + resultItem.getRowSize()); } catch (SQLException e) {
throw translateException(strSql, e); } finally {//关闭数据库连接
JdbcUtils.closeStatement(cstmt);
JdbcUtils.closeResultSet(rs);
} return resultItem;//返回结果集
}
它为什么getObject(3)
3不是游标类型吗怎么会获得结果集的呢?