java mybatis 執行 sqlserver儲存過程 xml 以及實現類
個人覺得用儲存過程來寫資料庫邏輯很方便,因為專案從資料庫到後端到前端都要去編寫。所以把所有的都分離。
首先ssm的結構配置這裡就不說了,可以看我部落格ssm的2種配置。
1、Mapper.java
import java.util.List;
import java.util.Map;
public interface Mapper {
public List<Map<String,Object>> operaProcedure(Map map);
}
2、mapperSetting.xml
<mapper namespace="daos.Mapper"> <parameterMap type="map" id="paramsMap"> <parameter property="action" javaType="String" jdbcType="VARCHAR" mode="IN" /> </parameterMap> </mapper>
3、test.java
這裡只貼了實現儲存過程的主要程式碼
SqlSessionFactory sf = (SqlSessionFactory) context.getBean("sqlSessionFactory"); SqlSession sqlsession = sf.openSession(); StringBuffer sb = new StringBuffer(); Mapper mapper = sqlsession.getMapper(Mapper.class); Map map = new HashMap(); sb.append("<main>"); sb.append("<PROCNAME>sp_videocall</PROCNAME>"); sb.append("<OPTYPE>delcall</OPTYPE>"); sb.append("<USERORDROWID>" + userordrowid + "</USERORDROWID>"); sb.append("<ROOMID>" + roomid + "</ROOMID>"); sb.append("</main>"); map.put("action", sb.toString()); List<Map<String, Object>> list = mapper.operaProcedure(map); Map resultMap = new HashMap(); sqlsession.commit(); sqlsession.close();
4、test.sql
CREATE TABLE [dbo].[t_videocall](
[flag] [int] IDENTITY(1,1) NOT NULL,
[ordeowid] [varchar](200) NULL,
[roomid] [varchar](200) NULL,
[keyid] [varchar](200) NULL,
[inline] [varchar](50) NULL,
[waittime] [datetime] NULL,
[userordrowid] [varchar](200) NULL
) ON [PRIMARY]
GO
CREATE proc [dbo].[sp_videocall] @str varchar(max)
as
begin
DECLARE @ItemMessage XML
SET @ [email protected]
declare @flag varchar(100)
if @ItemMessage.value('(/main/OPTYPE/text())[1]','varchar(max)') ='delcall'
begin
set @flag = (select top 1 flag from dbo.t_videocall where roomid = @ItemMessage.value('(/main/ROOMID/text())[1]','varchar(max)') and userordrowid = @ItemMessage.value('(/main/USERORDROWID/text())[1]','varchar(max)') order by flag asc)
delete dbo.t_videocall where flag = @flag
if exists(select * from dbo.t_videocall where flag = @flag)
select '以刪除' as result,'0' as error
else
select '出錯,請聯絡管理員' as result,'1' as error
end
end
以上
相關推薦
java mybatis 執行 sqlserver儲存過程 xml 以及實現類
個人覺得用儲存過程來寫資料庫邏輯很方便,因為專案從資料庫到後端到前端都要去編寫。所以把所有的都分離。首先ssm的結構配置這裡就不說了,可以看我部落格ssm的2種配置。1、Mapper.javaimport java.util.List; import java.util.Ma
mybatis 呼叫sqlserver 儲存過程
<select id="testStoredProcedure" statementType="CALLABLE" resultMap="TestMap"> <![CDATA[ {call AllNewcourse(${shopid},${cours
【mybatis】mybatis呼叫sqlserver儲存過程和表值函式
儲存過程和表值函式的區別 最簡單的區別是儲存過程是pr開頭的,而儲存過程是fn開頭的,表值函式返回的是一個表結構的結果。如果mybatis用呼叫儲存過程的方式去呼叫表值函式,就會丟擲以下的異常: exc
Java多執行緒/併發20、Future實現類:FutureTask
FutureTask是future的實現類,它同時實現了兩個介面:Runnable和Future,所以它既可以作為Runnable被執行緒執行,又可以作為Future得到Callable的返回值。 因此我們可以: - 呼叫FutureTask物件的ru
Java執行Oracle儲存過程並接收返回值
Java執行Oracle儲存過程並接收多個返回值(集合/數值) Java程式碼: package com.pure.util; import java.sql.Connection; import java.sql.DriverManager; import java.s
"伺服器無法繼續該事務 3400000006"錯誤原因--JAVA呼叫SQLSERVER儲存過程時過程發生異常內部事務未提交
通過JAVA呼叫SQLSERVER儲存過程時,儲存過程內部發生了型別轉換異常,在型別轉換異常發生之前已經將事務打開了,並且在型別轉換那一行沒有采用像如下錯誤處理: if @@error<>0 then goto err e
Java 執行資料庫儲存過程,並帶返回值
前提是載入資源DataSource private JdbcTemplate jdbcTemplate; Java 呼叫儲存過程: @Override public String oneUniscInfoHisToDm(final Str
菜鳥筆記:java呼叫sqlserver儲存過程
首先建立一個儲存過程: CREATE proc HR_PER_TARGET_SCORECHECK @PLANID varchar(20), @Obj_A0100 varchar(20), @Body
基於C#中的類SqlCommand物件呼叫SQLServer儲存過程時,儲存過程執行成功,但是物件方法ExecuteNonQuery()返回-1
問題如題。 【下面是一個例子】 1、儲存過程完成的功能是:插入insert一條記錄,相同主鍵的記錄存在時執行更新update的操作。儲存過程正常執行的返回值是1.(不過本文提到的問題和這個返回值沒關係。) 2、在另一個.cs檔案中使用 SqlCommand物件 呼叫方法Ex
mybatis呼叫oracle儲存過程返回遊標 讀取到java的List
mapper: <select id="testP" statementType="CALLABLE" > {call P_TEST(#{v_cursor, mode=OUT, jdbcType=CURSOR})} </select> ja
sqlserver儲存過程拼接sql語句,執行報錯“列名無效”
今天寫儲存過程,遇到一個問題,具體如下:需求是要統計一張報表,這張表的列不固定,因此在儲存過程裡做插入語句的時候,就用到了sql語句拼接再執行。這裡拼接的insert語句是set @sql= 'insert into ##tn(prj) values('[email
sqlserver儲存過程/遊標及例項
--系統儲存過程exec sp_databases --檢視系統資料庫exec sp_tables --檢視系統表exec sp_rename 'aaa','bbb' --修改表明aaa為bbbexec sp_rename 'dbo.aaa','col1','col2' --修改表aaa的列col1為col2
SQLSERVER儲存過程的基本語法例項
SQLSERVER儲存過程的基本語法例項 SQLSERVER儲存過程的基本語法例項 一、定義變數--簡單賦值 declare @a intset @a=5 print @a --使用select語句賦值 declare @user1 nvarchar(50) select @user1='張三'prin
sqlserver儲存過程實現資料批量刪除--分割字串實現
寫的儲存過程,接收的引數的一個字串,通過分割字串從而實現批量刪除。 IF (@operation = 'delete') BEGIN DECLARE @temp nvarchar(200) DECLARE @splitchar nvarchar(1) SET
Mybatis Oracle 使用儲存過程進行分頁
一、儲存過程 --儲存過程語句 CREATE OR REPLACE PROCEDURE PAGE_UTIL(--儲存過程分頁工具 location IN VARCHAR2,--查詢語句 page IN int,--第幾頁 perP
java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)
在java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字 //java程式碼 @Test public void testProcedure(){
【儲存過程】java呼叫 hana 的儲存過程
一)儲存過程寫法如下: CREATE PROCEDURE "HANA_BI"."com.WFJ.OFFLINE.PROCEDURES::TEST" (P_INT INT, out V_RESULT n
Java多執行緒程式設計--使用Lock物件實現同步以及執行緒間通訊
前幾篇: 在《Java多執行緒程式設計-(4)-執行緒間通訊機制的介紹與使用》已經學習了,可以使用方法wait/notify 結合同步關鍵字syn
sqlserver儲存過程
儲存過程 Transact-SQL中的儲存過程,非常類似於Java語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。這樣就可以提高儲存過程的效能。 儲存過程的概念 儲存過程Procedure是一組為了完