​​​​​​​​要在Mybatis中使用in查询主要有三种方式:

1.XML

在这里插入图片描述

2.Mybatis-plus里的QueryWrapper

queryWrapper.lambda().in(ToolUtil.isNotEmpty(ids), User::getId, ids);

3.@Select注解

X M L \color{red}{XML} XML的方式编写SQL从功能上来说是非常完备的,但是最大的缺点就是编写成本高,复杂, Q u e r y W r a p p e r \color{red}{QueryWrapper} QueryWrapper写SQL比较便捷,可以使用Lambda,但是对多表查询以及自定义返回值不太友好,个人比较偏好于使用 @ S e l e c t \color{red}{@Select} @Select注解的方式去编写查询SQL

最开始的时候自然而然是想到用这种方式去编写SQL,但是结果是没有生效的

@Select("SELECT id,name FROM user WHERE id IN #{ids}")
List<User> findByIds(List<Long> ids)

要在 @ S e l e c t \color{red}{@Select} @Select注解里面使用in查询需要有特定的语法和规则,有点类似XML的写法

@Select({"<script>",
            " SELECT ",
            " id, ",
            " name ",
            " FROM user WHERE id in ",
            "<foreach item='item' index='index' collection='items' open='(' separator=',' close=')'>",
            "#{item}",
            "</foreach>",
            "</script>"})
List<User> findByIds(@Param("items") List<String> userIds);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐