MyBatis if test 判断字符串相等不生效

1、问题
采用 MyBatis 框架操作 MySQL 数据库时,判断传入的字符串 auditStatus值为"N"时,执行相关操作,如下 xml 语句未生效:

<if test="auditStatus== 'N'">
    and audit_status= 0
</if>

2、原因
MyBatis 是使用 OGNL 表达式来进行解析的,在 OGNL 表达式中,'N’会被解析成字符。
因为 java 是强类型的,char 和 String 不等,所以 if 标签中的 SQL 不会被解析。

3、解决
解决方法:

使用双引号

<if test='"N" == auditStatus'>

双引号equals

<if test='"N".equals(auditStatus)'>

单引号调用 toString 方法

<if test="'N'.toString() == auditStatus">
posted @ 2022-03-09 15:02  菜鸟辉哥  阅读(586)  评论(0编辑  收藏  举报