MyBatis动态sql传参的问题

在使用mysql动态查询时遇到的一个问题,查询语句如下:

WHERE
    1=1


    AND u.STATUS = #{status}

其中 STATUS是一个Integer型枚举值(0,1),问题就是当从前端传进来的参数status为1时能被mybatis解析,而当status为0时这个判断条件直接被忽略了。

原因是在MyBatis中,会将0视为false,而不是作为真正的值传递。这是因为在XML配置文件中,标签的test属性实际上是一个Ognl表达式,而Ognl表达式中的0会被当作false处理,即 ‘’ == 0 == false.

解决办法:

第一种:

AND u.STATUS = #{status}

第二种:

AND u.STATUS = #{status}

第三种:

你可能感兴趣的:(mybatis,sql,android)