jfinal调用mysql存储过程 封装_jfinal 调用存储过程

我的做法是:

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就可以得到结果集了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值