文档章节

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

C
 Canaan_
发布于 2016/06/15 20:08
字数 232
阅读 274
收藏 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
粉丝 16
博文 266
码字总数 111916
作品 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
MyBatis 源码分析 - 映射文件解析过程

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

田小波⊰
07/30
0
0
《Spring事务的陷阱(3)》中的现象与myBatis的执行器参数

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

林中漫步
2015/10/13
428
0
spring中用事务

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

我的名字叫李猜
2016/09/28
432
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
46分钟前
0
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
1
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
4
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部