1. 程式人生 > >JFinal呼叫Mysql儲存過程方法

JFinal呼叫Mysql儲存過程方法

1.首先要清楚JFinal提供了Db+Record的模式,而其中有一個方法是這樣的Db.execute(ICallback),。

2.ICallback是JFinal提供的呼叫儲存過程的介面,介面中提供了run方法,用來實現儲存過程的呼叫。

簡單描述程式碼過程

(1)我在service類中寫了一個內部類來實現ICallback介面,並寫了一個方法呼叫內部類。

(2)我寫的borrow為mysql的儲存過程名,其中有兩個引數,兩個返回值

(3)reason,result為返回值。

(4).引用包應該如下,注意是java.sql.CallableStatement和java.sql.Connection

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.DbKit;
import com.jfinal.plugin.activerecord.ICallback;

(5)示例程式碼如下:

public class BorrowService{
//內部類開始
class BorrowDbPro implements ICallback {
    public String oid = null;
    public String reader_id=null;
    int result;
    public String reason="資料庫意外,請重試";
    public void run(Connection conn) throws SQLException {    
    CallableStatement proc = null;
           try {           
 
              proc = (CallableStatement) conn.prepareCall("{ call borrow(?,?,?,?) }"); // borrow為mysql的儲存過程名,其中有兩個引數,兩個返回值
             proc.setString(1, oid);//設定引數值
             proc.setString(2, reader_id);
             proc.registerOutParameter(3, java.sql.Types.INTEGER);//設定返回值型別
             proc.registerOutParameter(4, java.sql.Types.VARCHAR);
            proc.execute();
 
            result =  proc.getInt(3);//得到返回值
            reason=proc.getString(4);
      }catch(Exception e){
              e.printStackTrace();
       } finally {
            DbKit.close(proc, conn);
          }
    }

}
//內部類結束
//呼叫內部類方法
  public void trackresult(String reader_id){//可以加引數
           BorrowDbPro  borrowDbPro =new BorrowDbPro();
             borrowDbPro.reader_id=reader_id;
            Db.execute(borrowDbPro);
            String reason=borrowDbPro.reason;  
  }
}


相關推薦

JFinal呼叫Mysql儲存過程方法

1.首先要清楚JFinal提供了Db+Record的模式,而其中有一個方法是這樣的Db.execute(ICallback),。 2.ICallback是JFinal提供的呼叫儲存過程的介面,介面中提供了run方法,用來實現儲存過程的呼叫。 簡單描述程式碼過程 (1)我在s

spring data jpa 如何呼叫mysql儲存過程

  A:首先定義儲存過程依賴的jpa表:     @Entity     @Table(name="evenmngt_childthingtree_tmp")//資料庫中的表名     @Name

jdbc呼叫mysql儲存過程

public static void updateMtBeginTimeIsSix() { Connection connection = null; CallableStatement cs = null; try { connection = DataSource.getI

ireport5呼叫sqlserver2005儲存過程方法

1、儲存過程準備 ALTER PROCEDURE [dbo].[portofolio_definition_get]       @flag INT       AS BEGIN

mybaties呼叫mysql儲存過程儲存過程返回多個select結果集。

先看需求,直接上圖 從圖中看出,需要12條普通的SELECT語句,所以就放到儲存過程中 儲存過程如下: DROP PROCEDURE IF EXISTS proc_report; DELIMITER $ CREATE PROCEDURE proc_report( OUT d_norma

使用JDBC呼叫mysql儲存過程

多敲幾次java連線mysql,多操作一些簡單的例項,多看大神們的部落格很快就能掌握好java對資料庫的操作了。 程式碼: public static void procedure() throws ClassNotFoundException, SQLException{

python 呼叫mysql儲存過程返回結果集

儲存過程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = i

【Java】如何呼叫MySQL儲存過程

Java呼叫MySQL的儲存過程,需要用JDBC連線,環境eclipse 首先檢視MySQL中的資料庫的儲存過程,接著編寫程式碼呼叫 mysql> show procedure status; +------+-------------+-----------+-

ssm框架呼叫mysql儲存過程

1.建表 /* Navicat MySQL Data Transfer Source Server : localMysql Source Server Version : 50628 Source Host : 127.0.0.1:

shell 指令碼呼叫mysql儲存過程

#!/bin/sh ## The function of the script is used to balance statistics,we get ## data from the table accseqs,after the analysis and cal

c / c + + 呼叫mysql儲存過程

E文好的請檢視原文,菜鳥級翻譯,歡迎批評指正! mysql5.0支援儲存過程後,現在mysql6.0Alpha 版本也是可用的。6.0不僅支援大型資料庫(如 oracle和如此的大多數功能(如儲存過程、檢視、觸發器、作業等,並修復了這些功能存在的bug,6.0.1 版

mybatis呼叫mysql儲存過程返回結果集

儲存過程中經常需要返回結果集。Mysql中直接用select即可返回結果集。而oracle則需要使用遊標來返回結果集。這一點Mysql相對比較方便,如下程式碼即可實現輸出結果集: 儲存過程定義: D

Spring mvc呼叫mysql儲存過程

mysql> use modbus; Database changed mysql> DELIMITER $ mysql> drop procedure if exists p4;     -> create procedure p4()     -

jdbc呼叫mysql儲存過程,並獲得結果集合

最近碰到一個需要Java呼叫mysql儲存過程並獲得儲存過程結果集的場景. 儲存過程:spilte_result:分割字串儲存到臨時表,並返回臨時表的結果 資料庫執行結果 sum_interface_traffic_result:統計策略流量 現在使用JdbcTempl

mybatis呼叫mysql儲存過程(返回引數,單結果集,多結果集)

一、接收一個返回值 使用Map接收返回引數,output引數放在傳入的param中 建立表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMEN

MySql儲存過程中傳參和不傳參以及java中呼叫程式碼

資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product

MySQL儲存過程中的3種迴圈,儲存過程的基本語法,ORACLE與MYSQL儲存過程/函式的使用區別,退出儲存過程方法

  學無止境 部落格園   首頁   新隨筆   聯絡   訂閱  管理 隨筆-1968  評論-103  文章-4&

mysql 儲存過程建立及呼叫

返回(查詢users表的條數 + 傳入的數字) CREATE DEFINER=`root`@`localhost` PROCEDURE `getcount`(OUT s INT, IN t INT) BEGIN SET @t = (SELECT COUNT(1) FROM users);

幾種應用程式呼叫Oracle儲存過程方法

一、Java中呼叫帶Cursor的儲存過程: 儲存過程定義: PROCEDURE GET_CURSOR_RESULT2(CR OUT CURSOR_RESULT) IS BEGIN OPEN CR FOR select t1.id, t

MySQL 儲存過程相互呼叫舉例

create procedure prccharges(in orderno char(6),out shippingCharges float(4,2),out wrapCharges float(4,2)) begin select mshippingc