关于Mybatis注解方式SQL的返回结果判断

旧系统改造,改造后的由过去的dao-service这种结构改成了直接repository里的接口interface来直接注解(对应SQL-mapping的id)的方式进行对数据的操作。

问题来了,之前用的是batis我们有一个SqlMapClientDao来实现一个接口ibatisdao里面一大堆方法,我们在SqlMapClientDao这个类里面实现,对于update,insert操作是否成功我们会做一个判断返回一个结果。如下图:
这里写图片描述
try catch获取一个结果,是一个int类型,返回进行判断1为操作正常无异常,其他就是出了问题。

问题来了新项目是注解的形式,怎样定义接口获取 update 和 insert 的结果,是否成功了更新一条数据,这是我们比较关心的。

我之前定义了一个关于更新的接口,这个接口是int类型,希望能接受一个值来判断结果,然而运行起来总是报错,不管你数的数据是否能符合条件能否成功更新到数据库,都会抛一个异常。把类型改为void类型就没事,这样你就获取不到返回结果,更何谈如何判断是否更新插入数据成功。

于是用debug模式来追踪这个错误,点开expection e结果如下:
这里写图片描述
这里写图片描述
发现我们返回的类型必须是‘number’或者‘void’或者差不多相同,这就是为什么我们填void类型就没问题,之所以填int不行,应该是不接受基本类型只接受对象,这个number是一个超类,它包括很多子类像Float,Integer。

接受的是对象而不是基本类型我在batis里ibatisdao里看到的也能验证:
这里写图片描述

这时候,我们解决这个问题就简单多了,我们直接给接口一个Integer类型就可以了,既然要的是对象,就给他一个对象实例。至于能不能设置一下,传个Int基本类型可不可以,我暂时没想到,因为我们这个框架封装的严实,看不到里面具体的操作。
最后一句话,就是debug真TM好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值