温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Mybatis怎么用注解写in查询

发布时间:2021-07-13 12:24:00 来源:亿速云 阅读:1360 作者:小新 栏目:开发技术

这篇文章主要为大家展示了“Mybatis怎么用注解写in查询”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis怎么用注解写in查询”这篇文章吧。

Mybatis注解写in查询

@Select("<script>"
        + "SELECT * FROM table WHERE OrderNo IN "
        + "<foreach item='item' index='index' collection='list'      open='(' separator=',' close=')'>"
        + "#{item}"
        + "</foreach>"
        + "</script>")
List<Map<String,Object>> selectdemo(@Param("list") List<String> list);

这里foreach里面的collection值写@Param值。

Mybatis中IN语句查询、Mybatis中的foreach用法

1 需求

查询 用户 ID 为 101、102、103 的数据,参数是一个集合

2 在 SQL 语句中

select * from t_user where user_id in ( '101' , '102' ,'103')

3 在 Mybatis 中

你只需要

<select id="selectUserByIdList" resultMap="usesInfo">
 SELECT
 *
 from t_user
 WHERE id IN
 <foreach collection="idList" item="id" index="index" open="(" close=")" separator=",">
   #{id}
 </foreach>
</select>

对应的 Mapper中的接口如下

List<UserInfo> selectUserByIdList(@Param("idList")List idList)

4 聊一下

foreach元素的属性主要有collection,item,index,open,separator,close。

4.1 collection

用来标记将要做foreach的对象,作为入参时

List对象默认用"list"代替作为键

数组对象有"array"代替作为键,

Map对象没有默认的键。

入参时可以使用@Param(“keyName”)来设置键,设置keyName后,默认的list、array将会失效。

如下的查询也可以写成如下

List<UserInfo> selectUserByIdList(List idList)
<select id="selectUserByIdList" resultMap="usesInfo">
 SELECT
 *
 from t_user
 WHERE id IN
 <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
   #{id}
 </foreach>
</select>

如果是数组类型

List<UserInfo> selectUserByIdList(Long[] idList)
<select id="selectUserByIdList" resultMap="usesInfo">
 SELECT
 *
 from t_user
 WHERE id IN
 <foreach collection="array" item="id" index="index" open="(" close=")" separator=",">
   #{id}
 </foreach>
</select>

4.2

item:集合中元素迭代时的别名,该参数为必选。

index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选

open:foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选

separator:元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。

close:foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。

以上是“Mybatis怎么用注解写in查询”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI