首先写一个内部类并实现ICallback接口:
class CallbackTest implements ICallback {
public String areaCodes;//传入参数
public List<Record> list;//返回值
@Override
public Object call(Connection conn) throws SQLException {
CallableStatement proc = null;
try {
proc = (CallableStatement) conn.prepareCall("{ call sp_v_yd_channel_site_category(?) }"); // borrow为mysql的存储过程名,其中有两个参数,两个返回值
proc.setString(1, areaCodes);// 设置参数值
/*
* proc.registerOutParameter(2, java.sql.Types.);//设置返回值类型
*/ /* proc.execute(); */
ResultSet executeQuery = proc.executeQuery();
list = RecordBuilder.build(DbKit.getConfig(), executeQuery);
/*
* result = proc.getInt(3);//得到返回值 reason=proc.getString(4);
*/
} catch (Exception e) {
e.printStackTrace();
return list;
}
return list;
}
}
然后调用就好:
public void test(String areaCode) {
CallbackTest callbackTest = new CallbackTest ();
CallbackTest .areaCodes = areaCode;//设置参数
Db.execute(CallbackTest );//调用
List<Record> list = CallbackTest .list;//获取返回值
}