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

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

 1 SELECT  * FROM  TABLE_NAME AS a WHERE
2
3 a.id not in #{extraIds}
4 <foreach collection="extraIds" item="extraId" index="i" open="(" separator="," close=")">
5 #{extraId}
6
7 </foreach>
8
9 参数讲解的:
10
11 collection:需要循环的集合
12
13 item:每次循环的参数名字
14
15 index:索引(0开始)
16
17 separator:分隔符
18
19 open:整个循环开始的分隔符
20
21 close:整个循环结束的分隔符

第二种:参数string的数组,即:${}

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

或直接使用extraIds=("1,2,3")这种类型

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

 1 SELECT  * FROM  TABLE_NAME AS a WHERE
2
3 a.id not in ${extraIds}
4
5 一小段示类代码:
6
7 String extraIds = "1,2,3,4,5";
8
9 String[] extraIdArray = extraIds.split(",");
10 extIds = "";
11 for (String extraId : extraIdArray) {
12 if (extraId != null && !"".equals(extraId)) {
13 extraIds += ",'" + extraId + "'";
14 }
15
16 }
17
18 extraIds = "(" + extraIds.substring(1) + ")"
19
20 拼接后:('1','2','3','4','5')

第三种:使用QueryWrapper 直接用list

1 List<Integer> activityHelpSponsorIds = Arrays.asList(1,2,3);
2 QueryWrapper<HelpLog> queryWrapper = new QueryWrapper<>();
3 queryWrapper.lambda().in(HelpLog::getActivityHelpSponsorId, activityHelpSponsorIds);
4 List<HelpLog> helperlogList = helpLogService.list(queryWrapper);

mybatis处理集合、数组参数使用in查询的更多相关文章

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

    对于mybatis的参数类型是集合数组的时候进行查询. 第一种:参数list使用mybatis的标签 SELECT * FROM TABLE_NAME AS a <where> <i ...

  2. Mybatis传递多个参数进行SQL查询的用法

    当只向xxxMapper.xml文件中传递一个参数时,可以简单的用“_parameter”来接收xxxMapper.java传递进来的参数,并代入查询. 但是,如果在xxxMapper.java文件中 ...

  3. Mybatis 传入多个参数查询数据 (3种方法)

    第一种方案 DAO层的函数方法 public User selectUser(String name,String area); 对应的Mapper.xml <select id="s ...

  4. MyBatis传入集合 list 数组 map参数的写法

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.ite ...

  5. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例

    案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...

  6. MyBatis基础入门《三》Select查询集合

    MyBatis基础入门<三>Select查询集合 描述: 代码新增了一个MybatisUtil工具类,查询数据库返回集合的时候,接收数据的三种方式.由于代码会渐渐增多,未涉及改动过的文件不 ...

  7. ThinkPHP5.1中数据查询使用field方法数组参数起别名时遇到的问题

    首先数据库基本查询是没有问题的 <?php namespace app\index\controller; use think\Db; class Demo5 { //1.单条查询 public ...

  8. MyBatis中foreach传入参数为数组

    一.当只有一个参数,并且这个参数是数组时 接口方法的参数不需要添加@Param注释,collection="array" 示例 接口的方法 void deleteMulti(Str ...

  9. mybatis第二天——动态SQL与关联查询

    大纲摘要: 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If b) Where c) Foreach d) Sql片段 3.关联查询 a) 一对一关联 b) 一 ...

  10. 集合 数组 定义 转换 遍历 Arrays API MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. [转帖]setsockopt(setsockopt的使用方法及注意事项)

    http://xingzuo.aitcweb.com/9156453.html 1. setsockopt简介 setsockopt是一个系统调用函数,用于设置套接字选项.套接字是指通信的两个端点之间 ...

  2. 【转帖】基于官方rpm包方式安装Oracle19c

    https://blog.whsir.com/post-5489.html   本文基于Centos7.x环境,通过官方提供的rpm包来安装19c 1.下载Oracle19c安装包 https://w ...

  3. iptables 命令学习

    iptables 命令学习 摘要 Linux 早起版本使用netfilter进行数据包过滤. 最新的版本开始改用 ebpf的方式进行内核编程式的包过滤. netfilter 可以理解为内核态的一个处理 ...

  4. 金蝶Cosmic虚拟机简单使用与总结

    背景 知己知彼 简单学习下友商发出来的测试软件 看看有否对自己现在的工作有所指导 也看看对方的部署方式有啥优缺点 当然了仅是测试, 不是生产软件可能有失真. 注意 我没有测试序列号, 登录系统耗时很久 ...

  5. systemctl 关闭图形界面的办法

    开机以命令模式启动,执行: systemctl set-default multi-user.target   开机以图形界面启动,执行: systemctl set-default graphica ...

  6. Mysql到TiDB迁移,双写数据库兜底方案

    作者:京东零售 石磊 TiDB 作为开源 NewSQL 数据库的典型代表之一,同样支持 SQL,支持事务 ACID 特性.在通讯协议上,TiDB 选择与 MySQL 完全兼容,并尽可能兼容 MySQL ...

  7. dispaly结合背景图片会提升加载性能

    1.display的常见现象 我们很多人都知道,display可以让元素实现隐藏或者显示. 或者让行级元素变成块级元素. 对它的认识也是比较准确的. 如果一个元素使用了display:none; 那么 ...

  8. P9805 [POI2022~2023R1] ply

    1st思路 贪心 当遇到左括号深度加一,可如果当前深度大于 \(H\) 时深度减二,并且 \(ans\) 加一.相当于进行一次翻转操作. 当遇到右括号深度减一,当深度小于零时深度加二,并且 \(ans ...

  9. TienChin-课程管理-展示课程列表

    配置按钮权限 博主这里就不贴SQL了,自行手动添加一下吧. 更改表结构 ALTER TABLE `tienchin_course` MODIFY COLUMN `info` varchar(255) ...

  10. 设计模式学习-使用go实现解释器模式

    解释器模式 定义 优点 缺点 适用范围 代码实现 参考 解释器模式 定义 解释器模式(interpreter):给定一种语言,定义它的文法的一种表示,并定一个解释器,这个解释器使用该表示来解释语言中的 ...