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">
分类:
mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了