MyBatis 怎么在 XML 中使用 `` 和 `` 分支

夏浩酱_4042

夏浩酱_4042

2026-08-08

811人浏览

原创

mybatis 的 标签实现“多选一”条件逻辑,类似 switch-case-default,确保仅一个分支生效;从上到下匹配 的 test 表达式,命中即执行并跳过后续分支,未命中且含 则执行其内容,否则不生成 sql。

mybatis 怎么在 xml 中使用 `<choose>` 和 `<when>` 分支

MyBatis 的 `` 标签用于实现“多选一”的条件逻辑,类似 Java 中的 switch-case-default,它确保只有一个分支生效,避免多个条件同时触发导致 SQL 错误或语义混乱。

基本写法和执行规则

必须包裹一个或多个 , 是可选的。执行时从上到下依次判断 的 test 表达式,一旦命中就立即执行对应 SQL 片段,并跳过后续所有 和 。

  • 如果所有 都不满足,且存在 ,则执行 中的内容
  • 如果所有 都不满足,又没有 ,整个 块不生成任何 SQL
  • 中的 test 支持 OGNL 表达式,如 id != null、status == 'ACTIVE'、name != null and name != ''

常搭配的 SQL 元素

通常嵌套在 、 或直接放在 SELECT/UPDATE/DELETE 语句中。注意: 会自动处理前导 AND/OR,所以每个 内部只需写字段条件,不用加 AND。

Java Maven Code Review
Java Maven Code Review

审查Java Maven项目(ZIP压缩包或GitLab仓库URL),检查代码规范、命名、模块边界、可维护性问题以及重复代码。

下载
  • 用在 内:适合构建 WHERE 子句中的单条件筛选(例如按 ID、用户名、邮箱三者之一查询)
  • 用在 SELECT 列表中:可动态选择返回哪些字段(比如不同状态返回不同列)
  • 用在 ORDER BY 后:实现动态排序字段(如按注册时间、最后登录、活跃度排序)

字符串非空要显式判断

OGNL 中 null 和 '' 不等价,所以对字符串参数不能只写 username != null,否则传入空字符串会误触发。

  • 正确写法:username != null and username != ''
  • 错误写法:username != null(空字符串也会进入该分支)
  • 也可用 !StringUtils.isEmpty(username)(需引入工具类并配置 OGNL 变量)

默认分支 的实用技巧

不只是“兜底”,更是控制 SQL 完整性的关键。尤其在 中,若所有条件都不满足, 常写 1 = 1 来保证 WHERE 子句不被移除。

  • 示例:1 = 1 —— 让查询返回全表(慎用,注意性能)
  • 示例:status = 'NORMAL' —— 设定默认筛选条件
  • 不写 时,务必确认业务允许“无条件”情况,否则可能查不到数据或报错

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mybatis一级缓存和二级缓存
mybatis一级缓存和二级缓存

在MyBatis中,一级缓存和二级缓存是两种不同级别的缓存机制,它们都可以用来提高性能。本专题提供mybatis一级缓存和二级缓存相关文章,大家可以免费阅读。

2023.08.21

583

4

ibatis和mybatis有什么区别
ibatis和mybatis有什么区别

ibatis和mybatis的区别:1、基本信息不同;2、开发时间不同;3、功能与易用性;4、配置文件;5、入参类型与出参类型;6、返回结果集接受方式;7、语法差异;8、数据库方言支持;9、插件支持;10、社区活跃度;11、全球化支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2242

5

mybatis如何配置数据库连接
mybatis如何配置数据库连接

mybatis配置数据库连接的方法:1、指定数据源;2、配置事务管理器;3、配置类型处理器和映射器;4、使用环境元素;5、配置别名。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

446

5

mybatis工作原理及流程是什么
mybatis工作原理及流程是什么

mybatis工作原理及流程:1、配置文件;2、接口与映射;3、sql解析与生成;4、执行计划;5、结果处理;6、动态sql;7、缓存机制;8、插件;9、事务管理;10、日志与监控;11、扩展性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

292

4

hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

302

5

Java MyBatis框架
Java MyBatis框架

本专题专注于Java主流ORM框架MyBatis的应用,系统讲解SQL映射、动态SQL、结果映射、分页查询、缓存机制与多表关联等核心内容,并结合企业管理系统、电商平台和后台管理项目实战,帮助学员全面掌握高效的数据库持久层开发技能。

2025.08.26

5429

22

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.01

4244

5

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2024.08.01

5457

7

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2024.11.28

2362

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习