问题-01

Mybatis比较失效问题

1、问题复现

whetherPromoterNull是字符串类型,0使用单引号包裹,进行比较时发现不起作用

java 复制代码
    <if test="whetherPromoterNull != null and whetherPromoterNull.trim() == '0'"> and sui.share_user_id is not null</if>

2、原因

在MyBatis的条件判断中,使用单引号或双引号来括起字符串值都是可以的。但是在比较字符串类型的数字时,它们会产生不同的效果

  • 不加引号:比较数值时正常。若whetherPromoterNull是数值类型,比较数值时正常
  • 单引号:比较字符串时正常,比较数值时不正常。若whetherPromoterNull是数值类型,比较数值时不正常
  • 双引号:比较字符串时正常,比较数值时正常。若whetherPromoterNull是数值类型,比较数值时正常

3、解决方法

java 复制代码
//将数值类型通过toString方法变成字符串类型
<if test="whetherPromoterNull != null and whetherPromoterNull.trim() == '0'.toString()"> and sui.share_user_id is not null</if>

//使用双引号将数值类型变成字符串类型
<if test='whetherPromoterNull != null and whetherPromoterNull.trim() == "0"'> and sui.share_user_id is not null</if>

//不加引号
<if test="whetherPromoterNull != null and whetherPromoterNull.trim() == 0"> and sui.share_user_id is not null</if>
相关推荐
十五年专注C++开发1 分钟前
ANTLR4: CORBA IDL、C++ 语法文件分析利器
java·开发语言·c++·antlr4
子非衣2 分钟前
Java使用Aspose进行Word转PDF时异常卡主问题
java·pdf·word
此生决int4 分钟前
Java面向对象进阶精讲:抽象类、接口、内部类与Object类万字详解
java
阿维的博客日记9 分钟前
‘version‘ must be a constant version but is ‘${revision}‘
java·spring boot·后端
C+++Python11 分钟前
C++ 常量全面讲解
java·开发语言·c++
程序员小羊!15 分钟前
17 Maven
java·maven
C+-C资深大佬15 分钟前
C++ 数字与字符串互转
java·c++·算法
陈猪的杰咪16 分钟前
DeepSeek V4 中转方案全解析 | Flash 成本仅为 GPT 的 1/90
java·人工智能·gpt·spring
zlpzlpzyd18 分钟前
spring boot 4.1发布
java·数据库·spring boot