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

发布于:2025-03-26 ⋅ 阅读:(39) ⋅ 点赞:(0)

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

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

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


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 注解。


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

本文完结!

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


网站公告

今日签到

点亮在社区的每一天
去签到