jfinal如何调用存储过程?
存储过程用一下 Db.execute(ICallback) 这个方法,在其中用一下:
connection.prepareCall(sql).execute();
就可以调用存储过程了,并且还可以自由控制返回值
例子:
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();
//代码来到这里就说明你的存储过程已经调用成功,如果有输出参数,接下来就是取输出参数的一个过程
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();
//代码来到这里就说明你的存储过程已经调用成功,如果有输出参数,接下来就是取输出参数的一个过程
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;
}
jfinal如何调用存储过程?的更多相关文章
- spring data jpa 调用存储过程
网上这方面的例子不是很多,研究了一下,列出几个调用的方法. 假如我们有一个mysql的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `plus1in ...
- myabatis oracle 调用存储过程返回list结果集
Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...
- IBatis.Net使用总结(四)-- IBatis 调用存储过程
IBatis 调用存储过程 http://www.cnblogs.com/jeffwongishandsome/archive/2010/01/10/1543219.html http://www.c ...
- SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...
- 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...
- MyBatis学习总结(六)——调用存储过程(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013518.html 一.提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二.准备数据库表和存 ...
- C# 调用存储过程操作 OUTPUT参数和Return返回值
本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存 ...
- jdbc调用存储过程和函数
1.调用存储过程 public class CallOracleProc { public static void main(String[] args) throws Exception{ Stri ...
- jdbc执行预处理,批处理,LOB字段处理,调用存储过程
(1)jdbc执行预处理 PreparedStatment预备语句 eg:String sql="insert into user(id,name,birthday,money) value ...
随机推荐
- 使用阿里云Docker镜像加速
使用docker官方的docker hub速度太慢,正好看到国内阿里云也做了docker镜像,于是想试试看阿里云的docker源.先附上 阿里云docker hub地址 .新用户需要注册成为开发者.打 ...
- X86平台简称
1.PCH:PCH全称为Platform Controller Hub,是intel公司的集成南桥.AMD SB700/710/750 http://support.amd.com/TechDocs ...
- IP地址欺骗
1.什么是IP地址欺骗按照IP网络协议,数据包头包含来源地和目的地信息,而IP地址欺骗,就是通过伪造数据包爆头,使显示的信息源不是实际的来源,就像这个数据包是从另一台计算机上发送的. 2.IP地址欺骗 ...
- 每日英语:Investing the Downward Dog Way? Adviser Suggests Deep Breaths
When the Dow Jones Industrial Average hit a new record this past March, Brent Kessel awoke at 3:30 a ...
- ny33 蛇形填数
蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为: 10 11 12 1 9 16 1 ...
- vue的路由使用
1). 安装 vue-router npm install vue-router --save 2). 新建路由配置 安装成功后,在 src 新建 router 文件夹,然后新建 index.js 文 ...
- apue编程之参考df代码写的一个简单的df命令的源代码
代码: #include <stdio.h> #include <mntent.h> #include <string.h> #include <sys/vf ...
- 上传绕过WAF几种常见的姿势
1:WTS-WAF 绕过上传原内容:Content-Disposition: form-data; name="up_picture"; filename="xss.ph ...
- C# XCOPY命令 预先生成事件命令行”和“后期生成事件命令行”
$(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir) 输出文件目录的路径,相对于项目目录.这解析为“输出目录”属性的值.它包括尾部 ...
- 重启php
注意这是重启php,不是重启apache service php-fpm restart