MyBatis中parameterType的错误使用情况

我知道,如果mapper的接口中使用一个参数的情况下,可以使用parameterType进行接受参数类型的指定,现在mapper.xml中的内容如下:

MyBatis中parameterType的错误使用情况_第1张图片

parameterType可以接受简单的类型,也可以接受复杂来行,如map,自定义pojo等等,但是看看上面的代码并没有什么问题,不过也确实没有什么问题,再来看看mapper对应的接口类:


 貌似也没什么问题,因为Long型在service中方便判断是否是空等情况,所以我也没有在意,就这样一直用下来了,然后就悲剧了,报错信息如下:

MyBatis中parameterType的错误使用情况_第2张图片

看到这个报错界面我瞬间蒙了,不是说简单类型的可以这样使用吗,直接用parameterType,报这个错误的意思明显是将Long当作了一个pojo对象来处理了,思前想后的找不到答案那,还把之前的学习资料翻出来看,也没问题啊,是简单类型啊。。。简直是要疯的感觉,然后突然发现,之前的示例中,接口中的类型使用的是,int,long之类的,而不是Integer,Long,抱着试一试的心态做了如下修改:


将这里改为了long了,再次查看结果:

MyBatis中parameterType的错误使用情况_第3张图片

可以看到,错误信息变成了,找不到这个方法了,还是纳闷啊,命名有这个方法啊,但是参数有问题,是Long型的,但是我这里接口是long的,所以查看一下调用的代码:

MyBatis中parameterType的错误使用情况_第4张图片

很明显,这里面传入的是Long型的,问题肯定是出在这里了,所以把这里的Long型改为了long,如图:

MyBatis中parameterType的错误使用情况_第5张图片

修改之后还是不行

所以,还是使用@Param注解,之后就解决了,或者像网上说的使用

_parameter

你可能感兴趣的:(MyBatis中parameterType的错误使用情况)