日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

jfinal调用mysql存储过程 封装_jfinal如何调用存储过程?

發(fā)布時間:2025/3/15 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jfinal调用mysql存储过程 封装_jfinal如何调用存储过程? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

存儲過程用一下 Db.execute(ICallback) 這個方法,在其中用一下:

connection.prepareCall(sql).execute();

就可以調(diào)用存儲過程了,并且還可以自由控制返回值

例子:

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.SQLException;

import com.jfinal.core.ActionKey;

import com.jfinal.core.Controller;

import com.jfinal.plugin.activerecord.Db;

import com.jfinal.plugin.activerecord.ICallback;

import oracle.jdbc.OracleTypes;

public class AccessToken extends Controller {

@ActionKey("token/get")

public void applyToken() {

Object o = Db.execute(new ICallback() {

@Override

public Object call(Connection conn) throws SQLException {

CallableStatement proc = conn.prepareCall("{?=call eops_xxx.bbb(?,?)}");

proc.registerOutParameter(1, OracleTypes.INTEGER);

proc.setString(2, "證書");

proc.registerOutParameter(3, OracleTypes.VARCHAR);

proc.execute();

return proc.getObject(3);

}

});

renderJson(o.toString()));

}

}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

public Boolean setVarValue(final String processInstanceId, final String varName, final String varValue) {

Boolean flag = false;

Object o = Db.execute(new ICallback() {

@Override

public Boolean call(Connection conn) throws SQLException {

Boolean flag = false;

try {

CallableStatement proc = conn.prepareCall("{CALL PROCESS_WARN.set_var_value(?,?,?)}");

proc.setString(1, processInstanceId);

proc.setString(2, varName);;

proc.setString(3, varValue);

proc.execute();

//代碼來到這里就說明你的存儲過程已經(jīng)調(diào)用成功,如果有輸出參數(shù),接下來就是取輸出參數(shù)的一個過程

flag = true;

} catch (Exception e) {

flag = false;

log.error("execute procedure PROCESS_WARN.set_var_value mistakes !!!");

e.printStackTrace();

}

return flag;

}

});

flag = (Boolean) o;

return flag;

}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、

有返回值的

public String activeTaskForUpdate(final String processInstanceId,

final String operationClassKey, final String operationKey, final String taskOrgId,

final String orgFilterId, final String otherTag,final String newType) {

String task_id_list = "";

Object o = Db.execute(new ICallback() {

@Override

public String call(Connection conn) throws SQLException {

String task_id_list = "";

try {

CallableStatement proc = conn.prepareCall("{CALL PROCESS_WARN.active_task_for_update(?,?,?,?,?,?,?,?)}");

proc.setString(1, processInstanceId);

proc.setString(2,operationClassKey);

proc.setString(3, operationKey);

proc.setString(4, taskOrgId);

proc.setString(5, orgFilterId);

proc.setString(6, otherTag);

proc.setString(7, newType);

proc.registerOutParameter(8, oracle.jdbc.OracleTypes.VARCHAR);

proc.execute();

//代碼來到這里就說明你的存儲過程已經(jīng)調(diào)用成功,如果有輸出參數(shù),接下來就是取輸出參數(shù)的一個過程

task_id_list = proc.getObject(8).toString();

} catch (Exception e) {

log.error("execute procedure PROCESS_WARN.active_task_for_updatemistakes !!!");

e.printStackTrace();

if(e.getMessage().indexOf("ORA-20012") != -1){

String msg = e.getMessage().split("#")[1];

throw new NoAssigneeException(msg);

}else{

throw new SystemUnKnownException(e.getMessage());

}

}

return task_id_list;

}

});

task_id_list = (String) o;

return task_id_list;

}

總結(jié)

以上是生活随笔為你收集整理的jfinal调用mysql存储过程 封装_jfinal如何调用存储过程?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。