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 @   菜鸟辉哥  阅读(635)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示