问题-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>
相关推荐
深蓝轨迹3 分钟前
面试常见的jdk---LTS版本新特性梳理
java·面试·jdk
Stella Blog20 分钟前
狂神Java基础学习笔记Day01
java·笔记·学习
李白的天不白21 分钟前
java处理跨域请求
java
云烟成雨TD26 分钟前
Spring AI Alibaba 1.x 系列【11】Spring AI Models 扩展:DashScope
java·人工智能·spring
小堃学编程27 分钟前
【项目实战】基于protobuf的发布订阅式消息队列(2)—— 线程池
java·开发语言
怨言.34 分钟前
Java内部类详解:从基础概念到实战应用(附案例)
java·开发语言
XiYang-DING36 分钟前
【Java】 Java 集合框架
java·开发语言
心勤则明42 分钟前
Spring AI Alibaba Skills 的渐进式披露与热更新实战
java·后端·spring
netyeaxi1 小时前
Spring:如何查看Spring应用对外提供了哪些API接口?
java·spring
一只大袋鼠1 小时前
MySQL 事务从入门到精通(上):概念、操作、特性、隔离级别全解析
java·mysql·事务