标签:
先定义一个类 实现接口 ICallback 因为ICallback中已经有 conn 代码如下:
public class hztjCallBack implements ICallback { public String hzlx = "1"; public Date ksrq; public Date zzrq; public String hzbbm; public ResultSet rs = null; CallableStatement proc = null; public List<Record> result = null; @Override public Object call(Connection conn) throws SQLException { try { System.out.println("222"); proc = conn.prepareCall("{call p_hztjTemp(?,?,?,?)}"); proc.setString(1, hzlx); proc.setDate(2, ksrq); proc.setDate(3, zzrq); proc.setString(4, hzbbm); rs = proc.executeQuery(); result = RecordBuilder.build(DbKit.getConfig(), rs); } catch (SQLException e) { System.out.println(e.toString()); } return result; } }
然后在上层调用jfinal处理
hztjCallBack cb = new hztjCallBack(); cb.hzlx = "1"; cb.ksrq = java.sql.Date.valueOf("2015-01-01"); cb.zzrq = java.sql.Date.valueOf("2015-09-30"); cb.hzbbm = "gbb1"; Db.execute(cb); List<Record> result = cb.result; Iterator<Record> it = result.iterator(); while (it.hasNext()){ System.out.println(it.next()); }
有几点需要注意:
1.存储过程书写的时候一定加上 SET NOCOUNT ON;否则无法取得返回的结果集
2.不能将ResultSet直接返回上一层,不然会报结果集已关闭的错误
3.为将结果集返回,需将ResultSet转换为List<Record>,这样就可以返回了
标签:
原文地址:http://my.oschina.net/u/1786328/blog/525805