當前位置:首頁 » 存儲配置 » mybatis註解存儲過程

mybatis註解存儲過程

發布時間: 2024-11-24 13:02:18

A. mybatis調用存儲過程 參數怎麼傳遞

首先定義一個Mysql存儲過程:
DROP PROCEDURE IF EXISTS test ;
CREATE PROCEDURE test (IN p1 VARCHAR(26), OUT pResult VARCHAR(512))
BEGIN
SET pResult := NULL;
SET pResult :=CONCAT ( 'test',p1);
SELECT * FROM tb2 WHERE commet like Concat('%',p1, '%'); -- this 返回一個結果集
END;

tb2的表結構和數據如下:
DROP TABLE IF EXISTS `tb2`;
CREATE TABLE `tb2` (
`t_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`Name` varchar(255) DEFAULT NULL COMMENT '欄位名',
`type` int(1) DEFAULT NULL COMMENT '類型,0-正常,1-異常,2-傳輸,3-退單',
`commet` varchar(255) DEFAULT NULL COMMENT '備注',

B. MyBatis怎麼調用PostgreSQL存儲過程

1.調用沒有OUT參數的存儲過程:
創建存儲過程:
create or replace function get_code(a1 varchar(32)) returns varchar(32) as $$
declare the_result varchar(32);
begin
the_result := name from t_project where id = a1;
return the_result;
end;
$$
language plpgsql;
sqlMap配置文件:
<select id="f1" resultType="String" parameterType="map" statementType="CALLABLE" useCache="false">
<![CDATA[
select get_code(
#{a1,mode=IN,jdbcType=VARCHAR}
)
]]>
</select>
註:不使用OUT參數的存儲過程可以直接用 select
程序:
public String generateCode(String a1) {
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("a1", a1);
SqlSession sqlSession = getSqlSession();
String result = sqlSession.selectOne("f1", paramMap);
return result;
}
2.使用OUT參數的存儲過程:
創建存儲過程:
create or replace function testproc(a1 varchar(32),out a2 varchar(32),out a3 varchar(32)) as $$
declare
begin
select id into a2 from t_project where id=a1;
select name into a3 from t_project where id=a1;
return;
end;
$$
language plpgsql;
sqlMap配置文件:
<select id="generateCode1" parameterType="map" statementType="CALLABLE" useCache="false">
{
call testproc(
#{a1,mode=IN,jdbcType=VARCHAR},
#{a2,mode=OUT,jdbcType=VARCHAR},
#{a3,mode=OUT,jdbcType=VARCHAR}
)
}
</select>
程序:
public Map generateCode1(String a1) {
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("a1", k1);
SqlSession sqlSession = getSqlSession();
sqlSession.selectOne("generateCode1", paramMap);
return paramMap;
}
帶輸出參數的存儲過程,sqlSession.selectOne("generateCode1", paramMap);
將paramMap傳入之後mybatis調用存儲過程,將paramMap進行填充
paramMap最後的值:{a1=R20148800900, a2=R20148800900, a3=項目名稱}

C. 什麼是mybatis 為什麼要使用my batis

1、定義
MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。

2、使用原因
MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始映射,將介面和java的POJO(Plain Old Java Objects,普通的Java對象)映射成資料庫中的記錄。

3、總體流程
(1)載入配置並初始化
觸發條件:載入配置文件
處理過程:將SQL的配置信息載入成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
(2)接收調用請求
觸發條件:調用Mybatis提供的API
傳入參數:為SQL的ID和傳入參數對象
處理過程:將請求傳遞給下層的請求處理層進行處理。
(3)處理操作請求
觸發條件:API介面層傳遞請求過來
傳入參數:為SQL的ID和傳入參數對象
處理過程:
(A)根據SQL的ID查找對應的MappedStatement對象。
(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。
(C)獲取資料庫連接,根據得到的最終SQL語句和執行傳入參數到資料庫執行,並得到執行結果。
(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。
(E)釋放連接資源。
(4)返回處理結果將最終的處理結果返回。

D. mybatise怎樣調用存儲過程

如何使用Myts調用資料庫中的存儲過程,下面以Oracle資料庫的為例: 1.在資料庫中創建以下的存儲過程: 2.編寫SQL映射文件WxclDAO.xml: 其中statementType="CALLABLE"表示要調用存儲過程,parameterType參數類型; jdbcType對應資料庫中的...

E. mybatis調用mysql存儲過程(返回參數,單結果集,多結果集)

mybatis調用mysql存儲過程(返回參數,單結果集,多結果集)

註: RETCODE、RETDESC 這里的輸出值不用在函數里 SELECT RETCODE; ,因為即使沒有,當執行成功後會自動返回在對象里(Object/Map),所以在函數里不用SELECT一下了。

Navicat中執行函數需要輸入參數值,也是對應圖1,@A@B表示輸出值。(一個輸入值兩個輸出值)

1. 標注一二三四五處如果存在,則執行成功後返回結果如下

標注一對應結果1
標注二對應結果2
標注三對應結果3
標注四對應結果4
標注五對應結果5
其中結果3返回的是集合。
存在這么多結果,想要取結果3中的集合是不好取的,只有像下圖一樣只有一個結果才好取出集合。

2. 標注一二四五處如果不存在,則執行成功後返回結果如下

只有結果1,對應的是標注三處的值。可以取出集合

函數p_plicate_enroll

F. Java框架MyBatis工作流程是怎樣的

一、Mybatis介紹


MyBatis是一款一流的支持自定義SQL、存儲過程和高級映射的持久化框架。MyBatis幾乎消除了所有的JDBC代碼,也基本不需要手工去 設置參數和獲取檢索結果。MyBatis能夠使用簡單的XML格式或者註解進行來配置,能夠映射基本數據元素、Map介面和POJOs(普通java對 象)到資料庫中的記錄。


二、MyBatis工作流程


(1)載入配置並初始化


觸發條件:載入配置文件


配置來源於兩個地方,一處是配置文件,一處是Java代碼的註解,將SQL的配置信息載入成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。


(2)接收調用請求


觸發條件:調用Mybatis提供的API


傳入參數:為SQL的ID和傳入參數對象


處理過程:將請求傳遞給下層的請求處理層進行處理。


(3)處理操作請求 觸發條件:API介面層傳遞請求過來


傳入參數:為SQL的ID和傳入參數對象


處理過程:


(A)根據SQL的ID查找對應的MappedStatement對象。

(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。

(C)獲取資料庫連接,根據得到的最終SQL語句和執行傳入參數到資料庫執行,並得到執行結果。

(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。

(E)釋放連接資源。


(4)返回處理結果將最終的處理結果返回。


orm工具的基本思想


無論是用過的hibernate,mybatis,你都可以法相他們有一個共同點:


從配置文件(通常是XML配置文件中)得到 sessionfactory.


由sessionfactory 產生 session


在session 中完成對數據的增刪改查和事務提交等.


在用完之後關閉session 。


在java 對象和 資料庫之間有做mapping 的配置文件,也通常是xml 文件。


功能架構

熱點內容
求生之路sp源碼 發布:2024-11-24 16:06:05 瀏覽:372
javaurl的正則表達式 發布:2024-11-24 15:53:45 瀏覽:245
c語言只可以執行編譯文件 發布:2024-11-24 15:53:33 瀏覽:756
126郵件伺服器地址 發布:2024-11-24 15:52:46 瀏覽:214
微信80安卓什麼時候更新動態 發布:2024-11-24 15:40:54 瀏覽:480
破天窩窩腳本 發布:2024-11-24 15:40:53 瀏覽:112
王者榮耀蘋果轉安卓怎麼轉的 發布:2024-11-24 15:40:49 瀏覽:677
取消win10開機密碼怎麼設置 發布:2024-11-24 15:26:03 瀏覽:796
編譯原理for循環三地址碼 發布:2024-11-24 15:16:44 瀏覽:201
php2048 發布:2024-11-24 15:14:49 瀏覽:894