mybatis 用对象封装的参数为String但传值为数字时mybatis会自动识别为Integer类型

例如下面的写法
假如给query.setIsSys(“0”);
但mybatis并不会执行到下面的sql语句。

public class query {
...
private String isSys;
private String currentUserId;
...
}
<select id="querySomething" returnType="XXX.XXX.XXX">

...
 /*根据是否是管理员, 限制数据的查看权限*/
<if test="query.isSys == '0'">
    and e.create_by = "${query.currentUserId}"
</if>
...

</select>

正确的写法应该是:

<select id="querySomething" returnType="XXX.XXX.XXX">

 ...
 /*根据是否是管理员, 限制数据的查看权限*/
<if test="query.isSys == 0">
    and ei.create_by = "${query.currentUserId}"
</if>
...

</select>

原因:mybatis会自动将数字识别为Integer,所以在if判断里对本是String类型而填充的是数字的属性不应添加双引号

你可能感兴趣的:(Mybatis)