文档章节

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

C
 Canaan_
发布于 2016/06/15 20:08
字数 232
阅读 361
收藏 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
博文 314
码字总数 135202
作品 0
福州
私信 提问
Mybatis如何捕捉存储过程抛出的异常

首先在PL/SQL中,创建一个存储过程如下: Mybatis映射文件(Mapper.xml)程序如下: 结论:按照测试情况是能够扑捉到错误信息的

HansonReal
2017/02/27
0
3
Mybatis要如何捕捉存储过程执行异常的信息?

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

HansonReal
2017/02/27
461
4
myBatis 调用oracle存储过程报错

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

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

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

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

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

林中漫步
2015/10/13
428
0

没有更多内容

加载失败,请刷新页面

加载更多

LIst的逆向遍历

public class list_demo { public static void main(String[] args) {// TODO Auto-generated method stub List list=new ArrayList<>(); list.add("a"); list.add("b");......

南桥北木
29分钟前
1
0
Linux下端口转发工具rinetd介绍

linux下简单好用的工具rinetd,实现端口映射/转发/重定向,针对TCP协议,不支持UDP。 官网地址 http://www.boutell.com/rinetd 里面介绍及使用齐全。 使用场景举例: 阿里云内网Redis连接问题...

ouhoo
42分钟前
4
0
Oracle学习日志-5(算数运算符,比较运算符和逻辑运算符)

因为有编程基础,所以对于这一章还是很好理解,只需要注意对NULL的运算。 操作的表格 算数运算符 查询商品名字和商品售价,并商品售价乘2 SELECT product_name,sale_price * 2 AS "sale_pri...

白话
55分钟前
1
0
搜索引擎(Lucene介绍、分词器详解)

Lucene介绍 Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简...

这很耳东先生
今天
4
0
quartz详细介绍

quartz常用api Scheduler 调度程序交互的主要API。 Job 希望由调度程序执行的组件实现的接口。 JobDetail 用于定义作业的实例。 JobDataMap 可以包含不限量的序列化数据,在job运行的时候可以...

大笨象会跳舞吧
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部