news 2026/9/23 3:16:50

MyBatis条件拼接失效?一招解决!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MyBatis条件拼接失效?一招解决!

问题背景

在前后端联调过程中,前端传递的参数在后端断点调试时能够正确接收,但在 MyBatis 的mapper.xml文件中,条件拼接却失效。原本使用常见的<if>标签检查参数是否为空,但始终无法生效。

原因分析

常见的<if test="dto.acb21a!=null and dto.acb21a!=''">写法在某些情况下可能无法正确判断字符串是否为空或空白。尤其是在参数为字符串类型时,空字符串或空白字符的判断可能不够严谨,导致条件逻辑未按预期执行。

解决方案

改用org.apache.commons.lang3.StringUtils工具类的isNotBlank方法,可以更严格地判断字符串是否非空且非空白。以下是优化后的代码示例:

<if test="@org.apache.commons.lang3.StringUtils@isNotBlank(dto.acb21a)"> <choose> <when test='dto.acb21a == "2"'> AND (BCC21B BETWEEN 1700 AND 1999 OR BCC21A BETWEEN 1700 AND 1999) </when> <when test='dto.acb21a == "3"'> AND (BCC21B BETWEEN 2000 AND 2999 OR BCC21A BETWEEN 2000 AND 2999) </when> <when test='dto.acb21a == "4"'> AND (BCC21B BETWEEN 3000 AND 4499 OR BCC21A BETWEEN 3000 AND 4499) </when> <when test='dto.acb21a == "5"'> AND (BCC21B BETWEEN 4500 AND 5999 OR BCC21A BETWEEN 4500 AND 5999) </when> <when test='dto.acb21a == "6"'> AND (BCC21B BETWEEN 6000 AND 7999 OR BCC21A BETWEEN 6000 AND 7999) </when> <when test='dto.acb21a == "7"'> AND (BCC21B BETWEEN 8000 AND 9999 OR BCC21A BETWEEN 8000 AND 9999) </when> <when test='dto.acb21a == "8"'> AND (BCC21B BETWEEN 10000 AND 14999 OR BCC21A BETWEEN 10000 AND 14999) </when> <when test='dto.acb21a == "9"'> AND (BCC21B >= 15000 OR BCC21A >= 15000) </when> </choose> </if>

关键点说明

  1. 字符串判断优化
    StringUtils.isNotBlank方法会检查字符串是否为null、空字符串或仅包含空白字符,比手动判断更可靠。

  2. 动态 SQL 逻辑清晰
    使用<choose><when>标签实现多条件分支,逻辑清晰且易于维护。

  3. 依赖引入
    确保项目中已引入org.apache.commons.lang3依赖,例如 Maven 配置:

    <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>

适用场景

此方案适用于以下情况:

  • 需要严格判断字符串参数是否有效。
  • 动态 SQL 中需根据参数值实现多分支条件逻辑。
  • 避免因参数为空或空白导致 SQL 拼接异常。

通过这种方法,可以显著提升 MyBatis 动态 SQL 的健壮性和可读性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 4:11:44

轻松高效生成音频字幕:OpenLRC完整指南与多语言LRC文件制作

轻松高效生成音频字幕&#xff1a;OpenLRC完整指南与多语言LRC文件制作 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT&#xff0c;Claude等)来转录、翻译你的音频为字幕文件。 …

作者头像 李华
网站建设 2026/9/22 8:44:39

鸿蒙投屏神器HOScrcpy:5分钟快速上手完整指南

鸿蒙投屏神器HOScrcpy&#xff1a;5分钟快速上手完整指南 【免费下载链接】鸿蒙远程真机工具 该工具主要提供鸿蒙系统下基于视频流的投屏功能&#xff0c;帧率基本持平真机帧率&#xff0c;达到远程真机的效果。 项目地址: https://gitcode.com/OpenHarmonyToolkitsPlaza/HOS…

作者头像 李华
网站建设 2026/9/22 18:26:57

从零到一:全栈FastAPI项目部署实战指南

从零到一&#xff1a;全栈FastAPI项目部署实战指南 【免费下载链接】full-stack-fastapi-template 项目地址: https://gitcode.com/gh_mirrors/fu/full-stack-fastapi-template 还在为项目部署的复杂配置而头疼吗&#xff1f;面对开发、测试、生产环境的差异&#xff0…

作者头像 李华
网站建设 2026/9/22 21:27:15

刚刚发布!中信所发布2025年度国际期刊预警名单

预警名单2025年12月7日&#xff0c;中国科学技术信息研究所&#xff08;简称中信所&#xff09;在第二届玉渊潭科研诚信会议发布了《2025年度国际期刊预警名单》&#xff0c;103种期刊入列&#xff0c;较去年增加52种&#xff0c;创2018年以来入列数量新高。据悉&#xff0c;中…

作者头像 李华
网站建设 2026/9/23 4:23:05

OCLP-Mod技术解析:为老旧Mac注入新活力的完整方案

OCLP-Mod技术解析&#xff1a;为老旧Mac注入新活力的完整方案 【免费下载链接】OCLP-Mod A mod version for OCLP,with more interesting features. 项目地址: https://gitcode.com/gh_mirrors/oc/OCLP-Mod 还在为那些被苹果官方抛弃的经典Mac设备感到惋惜吗&#xff1f…

作者头像 李华
网站建设 2026/9/22 8:42:15

QuickLook视频预览优化指南:3分钟解决所有播放问题

QuickLook视频预览优化指南&#xff1a;3分钟解决所有播放问题 【免费下载链接】QuickLook Bring macOS “Quick Look” feature to Windows 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook 还在为QuickLook无法正常预览视频而烦恼吗&#xff1f;双击视频文件却…

作者头像 李华