请选择 进入手机版 | 继续访问电脑版

[java] mybatis条件语句中带数组参数的处理

[复制链接]
查看109 | 回复14 | 2021-9-13 01:56:47 | 显示全部楼层 |阅读模式
目次

如题,在mybatis编写sql语句的时间 ,大概 会遇到 in如许 的关键字,我们知道in后面必要 接上('a','b','c')如许 的一个布局 。它像一个数组,但是是用括号()包裹的,参数之间还有逗号隔开。

这里由于 数组参数是变量,直接通过拼接的方式不可行。

这里必要 一个标签foreach,标签可以有item,collection,open,close,separator等属性,分别表示变量,变量集合,开始符号,竣事 符号,分隔符。

这里给出一个示例

定义返回对象

  1. <resultMap type="com.xxx.springmybatis.domain.User" id="UserResult">
  2. <id column="id" jdbcType="BIGINT" property="id"/>
  3. <result column="name" jdbcType="VARCHAR" property="name"/>
  4. <result column="email" jdbcType="VARCHAR" property="email"/>
  5. </resultMap>
复制代码

编写sql语句

  1. <select id="findByIds" resultMap="UserResult" parameterType="list">
  2. select * from users
  3. where id in
  4. <foreach collection="list" item="id" open="(" close=")" separator=",">
  5. #{id,jdbcType=BIGINT}
  6. </foreach>
  7. </select>
复制代码

定义dao方法:

  1. package com.xxx.springmybatis.dao;
  2. import java.util.List;
  3. import com.xxx.springmybatis.domain.User;
  4. public interface UserMapper {
  5. User getById(Integer id);
  6. User getByName(String name);
  7. void save(User user);
  8. List<User> findByIds(List<Integer> ids);
  9. }
复制代码

以上的示例,是通过id数组来查询对应的用户集合。我们传入的用户ID,终极 在sql中会通过拼接的方式构成 where id in (3,4)的条件。

如下所示,假如 要查询id为3,4的用户,那么打印的sql语句可以看出拼接的样子:

mybatis条件语句中带数组参数的处理

这里有必要阐明 的是foreach标签中的collection属性

1、List集合,默认使用 list代表入参,数组,默认使用 array作为入参。

2、假如 传入的参数是一个对象,对象User有个属性List ids,那么就使用 ids作为入参。

3、假如 接口声明的地方通过注解@Param("xx")指定了入参,那么list,array这种默认的参数就失效,这时间 必要 指定xx为入参。

本例中由于 使用 的是List集合传入,以是 默认就使用 了list作为collection入参的键。

mybatis多参数传递(此中 包括数组)

mapper接口

  1. public void batchDelete(@Param(value = "activityId") Integer activityId, @Param(value = "userIds") Integer[] userIds);
复制代码

mapper.xml的设置

  1. <insert id="batchDelete">
  2. delete from T_ACT_USERS where ACTIVITY_ID = #{activityId}
  3. and USER_ID in
  4. <foreach collection="userIds" item="item" index="index" open="(" separator="," close=")">
  5. #{item}
  6. </foreach>
  7. </insert>
复制代码

以上为个人履历 ,盼望 能给大家一个参考,也盼望 大家多多支持脚本之家。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 秋天一且 | 2021-9-13 04:11:15 | 显示全部楼层
看了这么多帖子,第一次看到这么高质量内容!
回复

使用道具 举报

avatar 123457227 | 2021-9-26 10:53:01 | 显示全部楼层
不错哦,admin楼主这是要火的节奏啊!
回复

使用道具 举报

avatar 茹蕙zx | 2021-9-26 18:29:28 | 显示全部楼层
楼上的能详细介绍一下么?
回复

使用道具 举报

avatar 圣道 | 2021-9-26 23:35:12 | 显示全部楼层
东方不败外加灭绝师太啊!
回复

使用道具 举报

avatar 空581 | 2021-9-27 12:33:05 | 显示全部楼层
admin楼主加油,看好你哦!
回复

使用道具 举报

avatar 123457278 | 2021-9-30 19:41:36 | 显示全部楼层
我就搞不明白了,看帖回帖能死人么,居然只有我这么认真的在回帖!
回复

使用道具 举报

avatar earth20011 | 2021-10-4 09:48:37 | 显示全部楼层
视死如归的架势啊!
回复

使用道具 举报

avatar axly530 | 2021-10-11 12:18:05 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的源码论坛他的站点都是商业源码,还是免费下载的那种!特别好用。访问地址:http://www.mxswl.com 猫先森网络
回复

使用道具 举报

avatar 聚雅阁砚堂 | 2021-10-12 20:09:49 | 显示全部楼层
admin楼主你想太多了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则