MyBatis test表达式中判断相等无效

简介: 本文目录1. 现象2. 问题处理3. 解决

1. 现象

想通过传入一个remarkflag标志,当remarkflag为"0"时,查询数据库中remark列为空字符串的行,当remarkflag为"1"时,查询数据库中某字段为非空字符串的行。代码如下:


       <if test="remarkflag != '' and remarkflag == '0'">

         AND remark =''

       </if>

       <if test="remarkflag != '' and remarkflag == '1'">

         AND remark !=''

       </if>


结果不论remarkflag设为"0"还是"1",上面两个判断均不成立。


2. 问题处理

查了许多文档,发现当判断的单引号内只有一个字符时,会被识别为Java语言中的char类型,上述remarkflag==‘0’,左边是字符串,右边是字符型,所以不成立,同理remarkflag == '1’也不成立。


3. 解决

强制转换下类型后,问题解决:


       <if test="remarkflag != '' and remarkflag == '0'.toString()">

         AND remark =''

       </if>

       <if test="remarkflag != '' and remarkflag == '1'.toString()">

         AND remark !=''

       </if>

相关文章
|
2月前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
205 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
SQL Java 数据库连接
mybatis @Select注解中当参数为空则不添加该参数的判断
public interface OrderMapper extends SqlMapper{ @Select("select * from tbl_order where room like #{room} and mydate like #{my...
4486 0
|
2月前
|
SQL Java 关系型数据库
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
41 0
|
Java 数据库连接 mybatis
mybatis if标签字符串判断
mybatis if标签字符串判断
168 0
|
SQL Java 数据库连接
Mybatis if test 判断数字时需要注意
Mybatis if test 判断数字时需要注意
411 0
|
SQL 安全 Java
学习MyBatis必知必会(4)~ OGNL 表达式和EL 表达式
学习MyBatis必知必会(4)~ OGNL 表达式和EL 表达式
399 0
|
SQL Java 数据库连接
Mybatis: sql中if 判断的坑
“原创精选,转载注明出处,三克油” 前言 Mbatis 的script标签可以支持很多动态SQL查询、在使用if test判断的时候、会有一些意向不到的坑 正文 我们一般在Mbatis中做update更新时、都会加上使用if test判断、防...
1622 0
|
SQL Java 数据库连接
mybatis 动态sql表达式相关应用
一、mybatis 表达式简介   对于mybatis3 ,提供了一种动态sql的方式。通过动态sql我们可以直接在mybatis 的xm映射文件中直接通过条件判断的方式进行查询添加的拼接。mybatis 项目地址为 http://github.com/mybatis/mybatis-3 。
1413 0
|
3天前
|
Java 数据库连接 Spring
Spring 整合 MyBatis 底层源码解析
Spring 整合 MyBatis 底层源码解析