标签根据ognl表达式判断属性值决定是否拼接sql片段,无else分支;test中禁用java方法、基本类型勿判null、map参数需用paramname判空,推荐配合标签使用。
` 标签怎么条件判断">
test 属性写法要准确
判断逻辑写在 test 属性里,使用 OGNL 表达式,直接访问传入参数对象的属性:
- 字符串判空:用
ssex != null && ssex != '',不能用equals() - 数值判零:如
classid != 0或age > 0 - 布尔值:直接写
enabled == true或简写为enabled - 对象属性嵌套:如
user.profile.age > 18
拼接时注意 SQL 语法连贯性
单独用 AND 或 OR,但容易导致首条条件前多出一个连接词。常见处理方式有两种:
- 在 WHERE 后加恒真条件:
WHERE 1=1,后面所有<if></if>都统一写AND xxx - 配合
标签使用:它会自动添加 WHERE关键字,并智能去除首个AND或OR
实际写法示例
查询员工,支持按姓名、年龄、状态组合筛选:
常见陷阱提醒
以下情况容易出错,需特别留意:
- test 表达式里用了 Java 方法调用(如
name.equals("")),MyBatis 不支持,会报错 - 参数是基本类型(如 int)却用
!= null判断,应改用值判断(如age != 0) - 多个
<if></if>拼 OR 逻辑时,没控制好执行顺序,可能造成 SQL 语法错误(比如开头就 OR) - 传入 Map 类型参数时,test 中要写
paramName != null,而不是直接写 key 名,除非用了@Param注解明确命名
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











