问题-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>
相关推荐
Java内核笔记2 分钟前
Spring Boot 4 可观测性源码剖析:OpenTelemetry 全链路打通日志、指标、追踪
java·后端
Wang's Blog4 分钟前
Java框架快速入门: Spring Security+OAuth2之跨域处理
java·开发语言·spring
我是大猴子6 分钟前
MyBatis‑Plus & MyBatis‑Flex 区别
java·服务器·数据库
Bs_MoneyMagnet19 分钟前
基于springboot+vue的在线音乐管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
YangYang9YangYan20 分钟前
2026 校招管理会计 JD 拆解,数据分析能力要求与工具清单
java·数据库·数据分析
写后端的胖头鱼32 分钟前
【高频面试题】分布式锁在项目中的应用
java·分布式·后端·分布式锁·高频面试题
CoderYanger36 分钟前
Java EE 进阶:2.3 JavaScript
java·开发语言·前端·javascript·css·职场和发展·java-ee
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之前后端分离多模块工程配置
java·spring·状态模式
梅梅绵绵冰1 小时前
SpringCloud网关
java·spring·spring cloud
敲代码的嘎仔1 小时前
互动问答系统实战:两级评论模型、ES 搜索集成、Caffeine 多级缓存全记录
java·开发语言·数据库·elasticsearch·缓存·mybatis·高并发