我的做法是:
1、写一个过程调用类,实现ICallback接口,完整代码如下:
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import oracle.jdbc.OracleTypes;
import com.jfinal.plugin.activerecord.ICallback;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.ModelBuilder;
/**
* 统计分析数据
* @author Administrator
*
*/
public class ProcedureTool implements ICallback {
private Object[] paras;
private String procedure;
private List> result;
@SuppressWarnings("rawtypes")
private Class extends Model> mdClass;
/**
* @param proc 存储过程名称及参数:如 prcName(?,?,?,?)
* @param paras 输入\输出 参数,默认最后一个为游标参数
*/
@SuppressWarnings("rawtypes")
public void setParas(Class extends Model> modelClass,String proc,Object...paras){
procedure=proc;
this.paras=paras;
mdClass=modelClass;
}
/**
* 结果集
* @return
*/
public List> getResultList(){
return result;
}
@Override
public Object run(Connection conn) throws SQLException {
// TODO Auto-generated method stub
CallableStatement proc = null;
result=null;
proc = conn.prepareCall("{ call "+procedure+" }");
for (int i=0; i
proc.setObject(i + 1, paras[i]);
}
proc.registerOutParameter(paras.length+1, OracleTypes.CURSOR);
proc.execute();
ResultSet rs = (ResultSet) proc.getObject(paras.length+1);
try {
result=ModelBuilder.build(rs, mdClass);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
2、调用getResultList就可以得到结果集了。
以上就是大概思路
南客南客 9个月前引用来自“车开源”的评论我的做法是:
1、写一个过程调用类,实现ICallback接口,如下:
public class ProcedureTool implements ICallback {
private Object[] paras;
private String procedure;
private List> result;
@SuppressWarnings("rawtypes")
private Class extends Model> mdClass;
/**
* @param proc 存储过程名称及参数:如 prcName(?,?,?,?)
* @param paras 输入\输出 参数,默认最后一个为游标参数
*/
@SuppressWarnings("rawtypes")
public void setParas(Class extends Model> modelClass,String proc,Object...paras){
procedure=proc;
this.paras=paras;
mdClass=modelClass;
}
/**
* 结果集
* @return
*/
public List> getResultList(){
return result;
}
@Override
public Object run(Connection conn) throws SQLException {
// TODO Auto-generated method stub
CallableStatement proc = null;
result=null;
proc = conn.prepareCall("{ call "+procedure+" }");
for (int i=0; i
proc.setObject(i + 1, paras[i]);
}
proc.registerOutParameter(paras.length+1, OracleTypes.CURSOR);
proc.execute();
ResultSet rs = (ResultSet) proc.getObject(paras.length+1);
try {
result=ModelBuilder.build(rs, mdClass);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
2、调用getResultList就可以得到结果集了。