1. 程式人生 > >spring+ibatis+junit呼叫儲存過程,事務不提交(rolled back)

spring+ibatis+junit呼叫儲存過程,事務不提交(rolled back)

在用junit進行單元測試時,呼叫sql server庫的儲存過程,會報如下問題,即事務自動回滾:
10:44:56.682 [main] WARN  - Unable to proxy method [public final void org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests.setApplicationContext(org.springframework.context.ApplicationContext)] because it is final: All calls to this method via a proxy will NOT be routed to the target instance.
10:44:56.777 [main] INFO  - Began transaction (1) for test context [
[email protected]
testClass = DeviceControllerTest, testInstance = [email protected], testMethod = [email protected], testException = [null], mergedContextConfiguration = [[email protected] testClass = DeviceControllerTest, locations = '{classpath:spring/applicationContext.xml}', classes = '{}', contextInitializerClasses = '[]', activeProfiles = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]]; transaction manager [o
[email protected]
78dc5f15]; rollback [true] 10:44:56.793 [main] DEBUG - {conn-100000} Connection 10:44:56.820 [main] DEBUG - {conn-100000} Preparing Call: {call UP_UserConfig_Save1 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)} 10:44:56.846 [main] DEBUG - {pstm-100001} Executing Statement: {call UP_UserConfig_Save1 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)} 10:44:56.846 [main] DEBUG - {pstm-100001} Parameters: [0, 111, 111, 2, 111, 0, 111, 1, 1, 815, 1445, 111] 10:44:56.847 [main] DEBUG - {pstm-100001} Types: [java.lang.Integer, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String] {"lan":false,"message":"成功","returncode":0} 10:44:56.984 [main] INFO - Rolled back transaction after test execution for test context [
[email protected]
testClass = DeviceControllerTest, testInstance = [email protected], testMethod = [email protected], testException = [null], mergedContextConfiguration = [[email protected] testClass = DeviceControllerTest, locations = '{classpath:spring/applicationContext.xml}', classes = '{}', contextInitializerClasses = '[]', activeProfiles = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]] 10:44:56.988 [Thread-1] INFO - Closing [email protected]ed3030: startup date [Sat Oct 24 10:44:54 CST 2015]; root of context hierarchy

如果此時測試的本意是要更新庫裡資料,則需要在對應測試的方法上加註解:@Rollback(false),如:

@Test
@Rollback(false)//防止事務自動回滾
public void testClientSetting(){
}
當然,在使用事務相關注解時,需要宣告式事務,即在applicationContext.xml檔案中新增:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false" />
	 
<!-- 定義事務 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="pushApiDataSource" />
</bean>



相關推薦

spring+ibatis+junit呼叫儲存過程事務提交(rolled back)

在用junit進行單元測試時,呼叫sql server庫的儲存過程,會報如下問題,即事務自動回滾:10:44:56.682 [main] WARN - Unable to proxy method [public final void org.springframewor

資料庫儲存過程事務 jfinal中呼叫儲存過程事務

mysql DELIMITER $$ CREATE PROCEDURE `student`.`ceshi`(n INT,j CHAR(1)) BEGIN IF j = 'h' THEN SELECT * FROM blog

springMVC呼叫儲存過程entity檔案寫法

<!--廣告任務申請,被稽核通過--> <select id="approveAdTask" statementType="CALLABLE" parameterType="java.util.Map"> {call approveAdTask( #{sn,mod

C# 後臺呼叫儲存過程獲取DataTable

 public System.Data.DataTable GetDataBy_storedproc2()         {             #region _adapter             var _adapter = new System.Data.Sq

java中使用mybatis呼叫儲存過程拿到返回值(單引數返回值)

service業務層呼叫dao層 注意:返回值直接從物件裡獲取 不需要拿物件接收再獲取 dao.uspGetUser(userPO);//物件封裝了儲存過程的入參和出參 count = userPO.getCount(); //count 是儲存過程的返回值 dao層介面 pu

Spring data jpa 呼叫儲存過程

1,先保證升級相關的類庫<org.springframework-version>4.1.7.RELEASE</org.springframework-version><spring.data.jpa.version>1.9.6.RELEASE</spring.dat

SpringMVC與Mybatis集合實現呼叫儲存過程事務控制

在SSM框架中經常會用到呼叫資料庫中的儲存過程、以及事務控制,下面以儲存某單據為例,介紹一下: 1、Oracle中儲存過程程式碼如下(主要邏輯將單據編碼自動加1,並將該單據編碼返回): CREATE OR REPLACE PROCEDURE "UPDATE_DJBHZT"

VB6下的ado Command呼叫儲存過程讀取返回值

最近在給老程式(VB6+SQL2005+水晶報表)新增備份、恢復資料庫功能。真心是手動備份資料庫太勞累,且顯得不專業,呵呵。呼叫sp_addumpdevice過程時,發生這SP有返回值,度娘了一圈,很少有提出儲存過程返回值如何在ADO Command中如何引用。 瞎寫的程式

SpringMvc呼叫儲存過程並返回儲存過程返還的資料

java後端很多時候都需要和資料庫進行互動,並返回業務資料。一般情況下都會採用執行SQL的方式來進行互動,但有些特別的場景時,也可以直接利用儲存過程返回資料。儲存過程返回資料的好處是隻需要一個呼叫,即可根據不同的引數返回不同的業務資料,這些業務資料有可能列名完全不一樣。實現如

mybatis呼叫儲存過程獲取返回的遊標

將呼叫儲存過程引數放入map中,由於返回的遊標中包含很多引數,所以再寫一個resultmap與之對應,型別為hashmap。設定返回的jdbcType=CURSOR,resultMap設定為id對應的值。最後遊標中的值就輸出到list中了。程式碼如下: service層

apache dbutils 呼叫儲存過程基於oracle資料庫

前言 Apache Commons DbUtils 1.7 版本才開始顯示支援儲存過程的呼叫,使用本篇程式碼請注意版本問題。 1.7版本更新的方法 int execute(String sql, Object… params) 執行SQL語句,包括儲存過程呼叫,

事務呼叫N個儲存過程但這些儲存過程都是有寫事務

SqlTransaction myTrans = sqlconn.BeginTransaction(); SqlCommand sqlcomm =new SqlCommand(); sqlcomm.Transaction = myTrans;

py呼叫oracle的儲存過程注意procedure的out取值方式

#!/usr/bin/env python import sys import csv import cx_Oracle import codecs import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

Mysql的儲存過程Mybatis對儲存過程呼叫

                        mysql儲存過

mybatis 呼叫儲存過程報錯 org.apache.ibatis.mapping.ParameterMode.IN

“` org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error resolving ParameterMode.

儲存過程的使用和基礎語法以及.Net呼叫儲存過程的方法

1、儲存過程的概念 儲存過程是一組為了完成特定功能的SQL語句集,儲存在資料庫中,經過第一次呼叫編譯後,再次呼叫不需要編譯。使用者通過指定儲存過程的名字並給出引數 (如果該儲存過程帶有引數) 來執行它 , 儲存過程是資料庫中的一個重要物件 ; 儲存過程中可以包含 邏輯控制語句 和 資料操

建立和呼叫儲存過程:查詢Stu資料庫中某個同學的選修課程的資訊包括學號姓名課程名稱成績

CREATE PROCEDURE proc_select--建立儲存過程 @Sno char(10) output,--輸入輸出引數 @Sname varchar(20) out,--輸出引數 @Cno char(4) out,--輸出引數 @grade tinyint

Oracle 儲存過程觸發器事務

部落格園 首頁 新隨筆 聯絡 管理 訂閱 隨筆- 75  文章- 0  評論- 0  Oracle 儲存過程,觸發器,事務,鎖 1.1儲存過程   儲存過程是一種命名的PL/SQL程式塊,他可以有引數,也可以有若干

mysql 檢視事務儲存過程觸發器

一 檢視 檢視是一個虛擬表(非真實存在),是跑到記憶體中的表,真實表是硬碟上的表。使用檢視我們可以把查詢過程中的臨時表摘出來,儲存下來,用檢視去實現,這樣以後再想操作該臨時表的資料時就無需重寫複雜的sql了,直接去檢視中查詢即可,但檢視有明顯地效率問題,並且檢視是存放在資料庫中的,如果我們程式中使用的sql

Spring Data Access】SimplJdbcCall呼叫儲存過程

SimpleJdbcCall 呼叫儲存過程 SimpleJdbcCall主要用來進行呼叫儲存過程,這個方法使用起來也比較簡單,先通過一個比較簡單的示例來熟悉一下api import org.springframework.context.ApplicationC