MyBatis中in的使用
From: https://www.cnblogs.com/w-bb/articles/6378031.html
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束。
在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可
以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key 下面分别来看看上述三种情况的示例代码:
1.单参数List的类型:
1 <select id="dynamicForeachTest" resultType="Blog"> 2 select * from t_blog where id in 3 <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> 4 #{item} 5 </foreach> 6 </select>
2.单参数array数组的类型:
1 <select id="dynamicForeach2Test" resultType="Blog"> 2 select * from t_blog where id in 3 <foreach collection="array" index="index" item="item" open="(" separator="," close=")"> 4 #{item} 5 </foreach> 6 </select>
3.自己把参数封装成Map的类型
1 <select id="dynamicForeach3Test" resultType="Blog"> 2 select * from t_blog where title like "%"#{title}"%" and id in 3 <foreach collection="ids" index="index" item="item" open="(" separator="," close=")"> 4 #{item} 5 </foreach> 6 </select>
错误示例:
使用in的时候,不能这样写 in ${skuIds}
应该使用foreach标签
MyBatis中in的使用相关推荐
- mybatis与php,浅谈mybatis中的#和$的区别
浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...
- MyBatis中#{}和${}的区别
------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...
- Mybatis中Oracle和Mysql的Count字段问题
Mybatis中Oracle和Mysql的Count字段问题 我们在进行项目开发时经常会碰到查询总数的问题,所以我们直接是用select count(1) from table来进行查询.那么在Myb ...
- MyBatis中jdbcType=INTEGER、VARCHAR作用
Mapper.xml中 pid = #{pid,jdbcType=INTEGER} pid = #{pid} 都可以用 Mybatis中什么时候应该声明jdbcType? 当Mybatis不能自动识别 ...
- Mybatis 中$与#的区别
1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...
- MyBatis中使用流式查询避免数据量过大导致OOM
欢迎关注方志朋的博客,回复"666"获面试宝典 今天mybatis查询数据库中大量的数据,程序抛出: java.lang.OutOfMemoryError: Java heap s ...
- 解决MyBatis中 Could not set property ~ o f ~异常
解决MyBatis中 Could not set property ~ of ~ public class Role {private Integer id; //idprivate String r ...
- 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义
今天突然碰到这个错误,让我复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义 nested exception is org.apache.ibatis.ex ...
- rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...
- mybatis中的resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...
最新文章
- python多线程下的信号处理程序示例
- SpringBoot最最最常用的注解梳理
- js 数字相加_Python练习:解题 - 两数相加(JS, TS, PY3版)
- 23种设计模式C++源码与UML实现--建造者模式
- Linux shell脚本的字符串截取
- [动态规划] uestc oj A - 男神的礼物
- timerfd_create Function not implemented问题
- wpf 写个简单的控件吧
- php保存上传的音频文件在哪里,php 视频、音频和图片文件上传,该如何解决
- HFSS - 印刷偶极子天线设计与仿真
- hadoop学习笔记之-NFS配置
- 三种方法求最大公约数
- 国内最长的地铁投影画廊在上海地铁诞生
- Python实现缺失数字的四种方法
- 浏览器劫持事件处置(麻辣香锅)
- 《知识图谱》赵军 学习笔记
- 电子商务数据分析的认识
- 比较 SVFI-RIFE 和 DAIN-APP 补针效果 施工中 ~
- leetcode 606 .根据二叉树创建字符串
- webpack多入口
热门文章
- EF5.x Code First 一对多关联条件查询,Contains,Any,All
- Xen的起源与工作原理
- django时间问题和时区设置
- 让您变的更智慧 秘笈145条(上)
- 【原创】指针和下标的10条对比
- Windows Server 2003 R2与SP2 的区别
- 探索性数据分析(EDA)-不要问如何,不要问什么
- 使用Typescript和React的最佳实践
- 用户体验改善案例_用户体验案例研究:建立更好的体验(重新设计“和平航空”网站)...
- Python——三级菜单