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

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

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

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

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

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

接受的是对象而不是基本类型我在batis里ibatisdao里看到的也能验证:
关于Mybatis注解方式SQL的返回结果判断_第4张图片

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

你可能感兴趣的:(Java,MyBatis)