mybatis 数据库字段为空or为空串 忽略条件过滤, 不为空且不为空串时才需nameParam过滤条件

name未配置视为不考虑name条件

select * from user where (( (ISNULL(name)) OR (name='') ) OR name = #{user.nameParam} )

三个or语句 推荐这个

select * from user where ISNULL(name) OR name='' OR name = #{user.nameParam}

sql 复制代码
select * from user where ISNULL(name) OR name=''
<if test="user.nameParam != null and user.nameParam !=''">
OR name = #{user.nameParam}
</if>

数据库的name字段为空或为空字符串 ,nameParam 无论有无值都可以匹配到

数据库的name字段不为空也不为空字符串, 就要用nameParam匹配了(传参nameParam不为空, 和数据库的不为空的匹配; 传参nameParam为空, 数据库的为空的匹配, 即不考虑name条件的场景)

相关推荐
不剪发的Tony老师1 小时前
rqlite:一个基于SQLite构建的分布式数据库
数据库·分布式·sqlite
爱的叹息1 小时前
Redis 与 MongoDB 对比分析
数据库·redis·mongodb
·薯条大王1 小时前
MySQL视图
大数据·数据库·mysql
Truelon1 小时前
【QT】QT编译链接 msql 数据库
数据库·qt
ahauedu2 小时前
CentOS 环境下 MySQL 数据库全部备份的操作指南
数据库·mysql·centos
張萠飛3 小时前
Redis如何判断哨兵模式下节点之间数据是否一致
数据库·redis·缓存
北漂老男孩3 小时前
MySQL、Oracle 和 PostgreSQL 是三种主流的关系型数据库的主要原理性差异分析
数据库·mysql·postgresql·oracle
GalaxyPokemon4 小时前
MySQL基础 [六] - 内置函数+复合查询+表的内连和外连
linux·运维·数据库·mysql·ubuntu
Linux运维老纪5 小时前
Linux 命令清单(Linux Command List)
linux·运维·服务器·数据库·mysql·云计算·运维开发
可观测性用观测云5 小时前
阿里巴巴 Druid 可观测性最佳实践
数据库