一开始我没有使用@Param注解,这是我的mapper.java
public void changeUserAuth(Integer userId,int identity);
Run Code Online (Sandbox Code Playgroud)
,这是我的 mapper.xml
<update id="changeUserAuth">
update user
<set>
<if test="identity != 0">identity = #{identity}</if>
</set>
<where>
<if test="userId != 0">userId = #{userId}</if>
</where>
</update>
Run Code Online (Sandbox Code Playgroud)
那么就正常运行了!我继续这样写,如下:
//this's mapper.java
public void updateUserStatus(Integer userId);
<!--this is mapper.xml>
<update id="changeUserAuth">
update user
set deleteFlag= true
<where>
<if test="userId != 0">userId = #{userId}</if>
</where>
</update>
Run Code Online (Sandbox Code Playgroud)
然而,它给出了一个错误,消息是
'class.java.lang.Integer' 中没有名为 'userId' 的属性的 getter
我可以理解mybatis无法解析Integer,但是为什么它不像我第一次使用那样错误,仅仅因为我有一个int类型的参数?在第二种方法中,我必须使用@Param注解