情景:进行用户的批量删除

>思路一

获取的要删除的用户的id,在dao层进行遍历这些id,每次都执行一次 delete from user where id=?;语句

这样的效率很低;

>思路二

获取的要删除的用户的id,在dao层使用 'in' 或者 'or' 将这些id拼接到一个SQL语句;

delete from user where id in(1,3,5,7);

delete from user where id ='1' or id ='3' or id ='5' or id ='7';

>思路三(Mybatis的foreach遍历)

以查询为例进行展示foreach:

由于要对集合进行判空,遍历操作,将集合封装在一个对象中传入。

输入映射对象:

public class UserIds {private List<Integer> idList=null;public List<Integer> getIdList() {return idList;}public void setIdList(List<Integer> idList) {this.idList = idList;}
}

mapper配置:

<select id="queryUserByIds" parameterType="userIds" resultMap="userMap">select * from user<if test="idList!=null"><where>user_id in <foreach collection="idList" item="userId" open="(" separator="," close=")">#{userId}</foreach></where></if></select>

foreach标签用于遍历传入的集合,属性如下:

  • collection:指定要遍历的集合对象
  • item:定义标识指向每次遍历时得到的对象
  • open:开始遍历时要拼接的字符串
  • close:结束遍历时要拼接的字符串
  • separator:遍历两个对象中间要拼接的字符串

mapper接口:

public interface UserMapper {public List<User> queryUserByIds(UserIds userids) throws Exception;
}

测试类:

@Testpublic void queryUserByIds() throws Exception{UserIds userids=new UserIds();List<Integer> idList=new ArrayList<>();idList.add(6);idList.add(7);userids.setIdList(idList);UserMapper mapper=session.getMapper(UserMapper.class);List<User> list=mapper.queryUserByIds(userids);for (User User : list) {System.out.println(User);}session.close();}

Mybatis foreach遍历相关推荐

  1. mybatis 判断 list 是否为空进行 foreach 遍历

    mybatis 判断 list 是否为空进行 foreach 遍历,这里记录一下 1.mapper 层代码 List<Check> findList(@Param("ids&qu ...

  2. html中foreach遍历list,foreach遍历----for(object o: list)

    Foreach遍历 前天在项目中遇到一个问题,foreach遍历过程中修改responses中的对象,其中responses的类型:IEnumerable,代码如下: foreach (Orde .. ...

  3. MyBatis foreach 标签常用方法总结

    一.前言   在 MyBatis 中,常常会遇到集合类型的参数,虽然我们可以通过 OGNL 表达式来访问集合的某一个元素,但是 OGNL 表达式无法遍历集合.foreach 标签就是专门用来解决这类问 ...

  4. mybatis foreach

    1.数组 public int deleteTIdcCqcByIds(Long[] ids); <update id="deleteTIdcCqcByIds" paramet ...

  5. PHP数组foreach遍历输出例子详解

    通常我们对于数据遍历会使用到foreach来操作当然也有使用到while list each函数来实现了,但在方便面上来看foreach更简洁好用性能也非常的不错,下面本人整理了一款在开发应用中for ...

  6. Mybatis——foreach用法

    目录 1. foreach元素的属性 2.foreach时,collection属性值的三种情况: 3.代码示例: 3.1 collection属性值类型为List: 使用@Param注解自定义key ...

  7. foreach遍历进阶_“枚举器“/GetEnumerator()方法

    通过foreach遍历数据,实际上是调用了一个"枚举器"来遍历数据,和foreach没有任何关系,foreach只是语法上的简化而已,或者说foreach语句降低了枚举的复杂度. ...

  8. php7的foreach遍历数组,PHP中使用foreach遍历三维数组

    昨天写代码的时候遇到一个三维数组,突然不知道怎么遍历这个三维数组,后面经过研究才发现,三维数组可以使用双foreach遍历,现在就分享给大家. PHP代码: //首先声明一个三维数组或者自己从数据库里 ...

  9. php类可以遍历,在PHP中检测一个类是否可以被foreach遍历

    在PHP中检测一个类是否可以被foreach遍历 在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历.那么类呢?我们要如何知道这个类是 ...

最新文章

  1. 为Docker容器设置静态IP
  2. 设备无法获得谷歌运行怎么办_因此,您刚刚获得了Google主页。 怎么办?
  3. Linux cd命令:切换目录
  4. 年龄是计数还是计量_电子皮带秤是静态称重还是动态称重?
  5. 每天走6000步,血糖真的可以恢复正常吗?
  6. Visio| Visio简易使用指南
  7. 组合使用Memento模式与Command模式实现多级Redo和Undo
  8. 揭秘网易视频云在数据传输方面的优化实战
  9. 最新全国行政区划,省市区县乡镇四级json数据
  10. 计量经济学 联合假设检验 F统计量
  11. Velero备份实战 - 基于Ceph的CSI快照
  12. 1665 完成所有任务的最少初始能量
  13. pm2在服务器上部署express项目
  14. 施耐德plc使用施耐德触摸屏设置
  15. 如何控制H5 video 只能后退(向后拖动)不能快进(向前拖动)
  16. 机器人操作系统ROS/ROS2(1)
  17. IEEE Geoscience and Remote Sensing Letters (GRSL)从投稿到录用过程分享
  18. VAPS XT开发入门教程00:基本介绍
  19. 存储器的整体概述(内存、外存、ROM、RAM)
  20. 自制PLC—木牛流马PLC V1.1发布

热门文章

  1. Go语言init函数你必须记住的六个特征
  2. Go Web编程--使用bcrpyt哈希用户密码
  3. PageHelper分页插件
  4. python数据分析框架
  5. 崛起于Springboot2.X之Mongodb多数据源处理(35)
  6. 2016-6-16 拓展练习
  7. 一个SQL逻辑读异常的解决方法
  8. STL 容器和迭代器连载8_访问顺序容器的元素
  9. 读书笔记:《时间投资法》之三
  10. Synchronized的使用详解与区别(干货满满!!!)