Mybatis @Select in

本文介绍了在Mybatis中使用@Select注解进行IN查询的方法,包括正确的语法格式和示例代码。对比了XML和QueryWrapper两种方式的优缺点,并推荐了@Select注解作为编写简洁SQL的选择。当@Select注解配合IN查询不生效时,给出了正确的语法结构,以确保查询能够正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.XML

在这里插入图片描述

2.Mybatis-plus里的QueryWrapper

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

3.@Select注解

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

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

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

要在@Select\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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值