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

存储过程

存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行。

存储过程既可以有参数有返回值,且有多个返回值。但是它与函数不同,存储过程的返回值只是指明执行是否成功,且不能像函数那样被直接调用,只能利用 execute 来执行存储过程。

创建储存过程

无参数,无返回值

--创建名为 PERSON_PROC 的无参数、无返回值的存储过程

create procedure PERSON_PROC

as

begin

--往person表插入一条数据

insert into person(name) values ('chenjy')

end

--执行存储过程

execute PERSON_PROC

5f749aa9b8b46096dca5ce07ef762cdf.png

49098909323a97cb318fa4acd592c6cb.png

有参数,有返回值

--创建名为 PERSON_PROC2 的有输入参数、有返回值的存储过程

create procedure PERSON_PROC2

@Name nvarchar(10)='chenjy' --设置默认值

as

begin

insert into person(name) values (@Name)

select * from person

end

--执行名为 PERSON_PROC2 的有输入参数的存储过程

execute PERSON_PROC2 'chenmm'

613bfa6f3a68379f3128fcd233fac568.png

JFinal调用

新建实现ICallback的类

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import com.jfinal.plugin.activerecord.DbKit;

import com.jfinal.plugin.activerecord.ICallback;

import com.jfinal.plugin.activerecord.Record;

import com.jfinal.plugin.activerecord.RecordBuilder;

public class TestCallBack implements ICallback {

public String name = "chenjy";

public ResultSet rs = null;

CallableStatement proc = null;

public List result = null;

@Override

public Object call(Connection conn) throws SQLException {

try {

// 调用存储过程 PERSON_PROC2

proc = conn.prepareCall("{call dbo.PERSON_PROC2(?)}");

// 输入参数name

proc.setString(1, name);

rs = proc.executeQuery();

// 返回值

result = RecordBuilder.build(DbKit.getConfig(), rs);

proc.close();

} catch (SQLException e) {

System.out.println(e.toString());

}

return result;

}

}

调用

TestCallBack cb = new TestCallBack();

// 输入参数 name=chenjynew

cb.name = "chenjynew";

Db.execute(cb);

// 打印返回值

System.out.print(cb.result.toString());

调用成功添加了一条chenjynew并检索出所有的数据

e322c9640fd55dd750b2e8e1450dd640.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值