文档章节

mybatis 调用存储过程,如何抛出sql异常

C
 Canaan_
发布于 2016/06/15 20:08
字数 232
阅读 307
收藏 4

在用mybatis调用数据库的存储过程时,我发现有时即使mybatis失败了,乃至存储过程异常了。mybatis也不会抛出异常,下面是处理这种情况的方法

1. 有如下存储过程( sqlServer 2012)

USE [WES]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Pros_CreateMessage]
  @id varchar(50) = '', 
  @senderId  varchar(50) = 'A0000001', 
  @type int              
AS                                    
BEGIN
  SET NOCOUNT ON;
  BEGIN TRAN
  BEGIN TRY
       --存储过程具体实现代码.....
      set @result = 1  --如果成功就返回的结果

   COMMIT TRAN
   END TRY
   BEGIN CATCH
   
   ROLLBACK TRAN 
   print(ERROR_MESSAGE())
   set @result = ERROR_MESSAGE()  --失败就将异常抛出,到时mybatis就会收到
   end catch

   select @result as succeed --正常结束时就返回@result 
  
END

只要将ERROR_MESSAGE()做为返回值,到时mybatis自动就会抛出异常了

2. mybatis存储过程的调用 

<select id="xxx" resultType="int" parameterType="map" statementType="CALLABLE" flushCache="true">
   {call Pros_CreateMessage(#{id,mode=In,jdbcType=VARCHAR},#{senderId,mode=In,jdbcType=VARCHAR})}
</select>

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
C
粉丝 17
博文 296
码字总数 128442
作品 0
福州
Mybatis要如何捕捉存储过程执行异常的信息?

最近写的程序中发现存在如下的问题,当我用mybatis调用存储过程(数据库使用的是ORACLE),发现当过程执行存在异常,但是我事务任然提交了,目前的处理方法是根据过程中定义的返回标志来判断的,...

Hanson_Q
2017/02/27
379
4
myBatis 调用oracle存储过程报错

我用myBatis 调用一个有多个参数+多个返回参数+一个游标 oracle存储过程,存储过程中有判断如果某个参数不正确,则直接返回不执行游标查询。这个时候myBatis会抛异常: ### Cause: java.sql....

飘过xxx
2014/01/02
861
6
spring中用事务

在使用mybatis 中有sql语句的插入调用,又有存储过程的调用.怎么控制事务? 在存储过程的调用后出现异常 怎么进行回滚?

我的名字叫李猜
2016/09/28
432
5
《Spring事务的陷阱(3)》中的现象与myBatis的执行器参数

在此前发表的《Spring事务的陷阱(3)》中,该现象仅与myBatis的参数"defaultExecutorType" 有关。若将mybatis.xml中的参数"defaultExecutorType"设为"BATCH",即: 则以下代码中的"bookDao....

林中漫步
2015/10/13
428
0
MyBatis 源码分析 - 映射文件解析过程

1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中...

田小波⊰
07/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

macOs-挂载能读写的NTFS硬盘

转自:https://nicklinyi.gitee.io/blog/2018/04/macOS-ntfs.html Mac本身是支持NTFS写入的,只是NTFS是微软开发,由于版权和技术细节原因,苹果不愿公开说自己支持NTFS写入,也是有自己以后...

北风刮的不认真了
6分钟前
1
0
Namespace 命名空间

命名空间可以定义为一种封装方式。 为了解决开发中库和程序中可重用类和方法问题: 1.解决 PHP内部方法类/方法/常量 或者第三方 类/方法/常量之间的命名冲突 2.能够简化为了防止命名冲突而给...

忙碌的小蜜蜂
9分钟前
0
0
CDH的坑之Deploy Client Configuration Failed

Deploy Client Configuration Failed 1.问题描述 当使用CDH增添spark服务的时候,出现了以下错误: Faile to deploy client configuration to the cluster. 具体如下图: 2.思路 网上查了...

星汉
10分钟前
1
0
java guava 集合的操作:交集、差集、并集

Guava:google的工程师利用传说中的“20%时间”开发的集合库,它是对jdk提供的扩展,提供了很多实用的类来简化代码。 开源地址:https://github.com/google/guava jar包下载:http://maven....

帅的不像男的
10分钟前
1
0
从八个层面比较分析 Java 8, RxJava, Reactor

响应式编程在单机环境下是否鸡肋? 结论是:没有结论,我觉得只能抱着怀疑的眼光审视这个问题了。另外还聊到了 RSocket 这个最近在 SpringOne 大会上比较火爆的响应式”新“网络协议,githu...

小刀爱编程
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部