当前位置: 首页 > news >正文

【Mybatis-plus】在mybatis-plus中 if test标签如何判断 list不为空

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌

技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。

感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。

在mybatis-plus中 if test标签如何判断 list不为空

  • 一、使用 != null 和 size() > 0
  • 二、 使用 !empty
  • 三、注意事项
  • 四、完整示例
  • 五、总结

MyBatis-Plus 中, <if test="..."> 标签用于动态生成 SQL 语句。如果需要判断一个 List 是否不为空,可以使用以下方法:

一、使用 != null 和 size() > 0

在 test 表达式中,可以通过 != null 判断 List 是否为 null,并通过size() > 0判断 List 是否非空。

示例:

<select id="selectUsers" resultType="User">
    SELECT * FROM user
    WHERE 1 = 1
    <if test="userList != null and userList.size() > 0">
        AND id IN
        <foreach collection="userList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </if>
</select>

说明:

  • userList != null:判断 userList 是否为 null

  • userList.size() > 0:判断 userList 是否非空

二、 使用 !empty

MyBatis 提供了 empty 关键字,可以简化判断逻辑。!empty 会同时检查对象是否为 null是否为空集合。

示例:

<select id="selectUsers" resultType="User">
    SELECT * FROM user
    WHERE 1 = 1
    <if test="!empty(userList)">
        AND id IN
        <foreach collection="userList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </if>
</select>

说明:

  • !empty(userList):等同于 userList != null and userList.size() > 0

三、注意事项

  • 如果Listnull,直接调用 size() 会抛出 NullPointerException,因此需要先判断 != null

  • !empty() 是更简洁的写法,推荐使用。

四、完整示例

假设有一个查询方法,根据传入的List<Long>查询用户信息:

List<User> selectUsers(@Param("userList") List<Long> userList);

对应的 XML 配置:

<select id="selectUsers" resultType="User">
    SELECT * FROM user
    WHERE 1 = 1
    <if test="!empty(userList)">
        AND id IN
        <foreach collection="userList" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </if>
</select>

五、总结

推荐使用 !empty(list) 来判断 List 是否非空,因为它更简洁且安全。

如果需要显式判断,可以使用 list != null and list.size() > 0

确保传入的 List 参数在方法中正确使用 @Param 注解。


好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!在这里插入图片描述

相关文章:

  • 尝试在软考65天前开始成为软件设计师-计算机网络
  • Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)
  • Qt窗口控件之对话框QDialog
  • 基线定位系统:长基线与超短基线的原理与应用
  • 归并排序的思路与实现
  • 【Vitis AIE】FPGA快速部署ConvNet 示例MNIST数据集
  • 植物来源药用天然产物的合成生物学研究进展-文献精读121
  • QT Quick(C++)跨平台应用程序项目实战教程 1 — 教程简介
  • python中所有内置类型
  • 一文了解 分布式训练
  • 开源ASR选择
  • 探索大模型的幻觉问题及其解决策略
  • FIT Framework 社区 v3.5.0-M1 版本发布
  • Copilot提示词库用法:调整自己想要的,记住常用的,分享该共用的
  • `docker commit`和`docker tag`
  • 各类神经网络学习:(三)RNN 循环神经网络(中集),同步多对多结构的详细解释
  • Nginx代理本机的443到本机的8080端口
  • 基于DeepSeek-R1 的RAG智能问答系统开发攻略
  • 数据结构之栈的2种实现方式(顺序栈+链栈,附带C语言完整实现源码)
  • 第一天 UnityShader的结构
  • 西安市未央区建设局官方网站/google官网下载安装
  • 西安公司网站建设/免费seo在线优化
  • 淘宝内部卷怎么做网站/如何建立一个自己的网站?
  • 桂林手机网站制作/无锡百度推广开户
  • 网站建设合作方案/企业如何进行网络推广
  • 广州站是哪个站/搜索引擎的使用方法和技巧