in传数组 mybstis_mybatis处理集合、数组参数使用in查询等语句的两种方法

对于mybatis的参数类型是集合数组的时候进行查询。

第一种:参数list使用mybatis的标签

SELECT * FROM TABLE_NAME AS a

AND a.constomer_grade in

#{extraId}

参数讲解的:

collection:需要循环的集合

item:每次循环的参数名字

index:索引(0开始)

separator:分隔符

open:整个循环开始的分隔符

close:整个循环结束的分隔符

第二种:参数string的数组需要处理参数形成extraIds=('1','2','3')这种类型,需要拼接字符

注意在mybatis中使用的是${},不能使用#{},否则报错

SELECT  * FROM  TABLE_NAME AS a WHEREa.id not in ${extraIds}

一小段示类代码:

String extraIds = "1,2,3,4,5";

String[] extraIdArray = extraIds.split(",");

extraIds= "";

for (String extraId : extraIdArray) {

if (extraId != null && !"".equals(extraId)) {

extraIds += ",'" + extraId + "'";

}

}

extraIds = "(" + extraIds.substring(1) + ")";

拼接后:('1','2','3','4','5')

参考链接:https://blog.csdn.net/weixin_38391672/article/details/80701504

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 中,查询集合参数可以使用以下两种方式: 1. 使用 foreach 标签 使用 foreach 标签可以遍历集合参数中的每个元素,将元素的值赋给 SQL 语句中的参数。例如,我们可以使用如下的 SQL 语句查询多个用户的信息: ``` <select id="getUserList" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 在上述 SQL 语句中,我们使用了 foreach 标签对集合参数 ids 进行了遍历,将遍历得到的元素 id 的值赋给了 SQL 语句中的参数 #{id}。其中,open、separator、close 属性分别指定了 SQL 语句中的括号、分隔符等。 在 Java 代码中,我们可以将集合参数 ids 以 List 或者数组的形式递给 MyBatis: ``` List<Integer> ids = Arrays.asList(1, 2, 3); List<User> userList = sqlSession.selectList("getUserList", ids); ``` 在上述 Java 代码中,我们将 ids 以 List 的形式递给 MyBatisMyBatis 会自动使用 foreach 标签将集合参数中的元素递给 SQL 语句中的参数。 2. 使用 @Param 注解 另一种方式是使用 @Param 注解指定集合参数的名称,然后在 SQL 语句中直接使用该名称。例如,我们可以使用如下的 SQL 语句查询多个用户的信息: ``` <select id="getUserList" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 在 Java 代码中,我们可以使用 @Param 注解指定集合参数的名称为 ids: ``` List<Integer> ids = Arrays.asList(1, 2, 3); List<User> userList = sqlSession.selectList("getUserList", @Param("ids") ids); ``` 在上述 Java 代码中,我们使用 @Param 注解指定了集合参数的名称为 ids,然后将 ids 以 List 的形式递给 MyBatisMyBatis 会自动将集合参数递给 SQL 语句中的参数,从而实现查询集合参数的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值