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

Posted root_zhb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis if test 判断字符串相等不生效相关的知识,希望对你有一定的参考价值。

1、问题

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

<if test="prmCreated == 'N'">
    and prm_closed = 0
</if>

2、原因

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

3、解决

解决方法:

  1. 使用双引号
<if test='"N" == prmCreated'>
  1. 双引号equals
<if test='"N".equals(prmCreated)'>
  1. 单引号调用 toString 方法
<if test="'N'.toString() == prmCreated">

以上是关于MyBatis if test 判断字符串相等不生效的主要内容,如果未能解决你的问题,请参考以下文章

mybatis里if标签判断字符串相等不相等的有关问题

mybatis里if标签判断字符串相等不相等的问题

mybatis中if标签判断字符串相等问题

mybatis if判断两个值是否相等存在的坑啊

mybatis if判断两个值是不是相等存在的坑啊

mybatis if test 判断字符串的坑