Mybatis3.0_动态SQL元素:foreach-遍历集合_
foreach-遍历集合 -笔记要点
<!--foreach 遍历标签
collection : 指定要遍历的集合;
list类型的参数会特殊处理封装在Map中,map的key就叫做list;
item ; 将当前遍历的元素复制给指定的变量;
separator : 每个元素之间的分隔符!
open : 遍历出所有的结果拼接到一个开始的字符!
close: 遍历出所有的结果拼接一个 结束的字符!
index : 索引,遍历list的时候是索引,
遍历map的时候index表示的就是map的key,item就是map的值;
#{变量名},就能取出变量的值,也就是当前遍历出的元素
-->
出错分析与总结
1.定义接口
//查询员工id'在给定集合中的
public List<Employee> getEmpsByConditionForeach(@Param("ids")List<Integer> ids);
2.定义XML映射文件
<!--public List<Employee> getEmpsByConditionForeach(Employee e);-->
<select id="getEmpsByConditionForeach" resultType="com.bean.Employee">
select * from tbl_employee
-- where id in (1,5,6)
<foreach collection="ids" item="item_id" separator=","
open="where id in (" close=")" index="">
#{item_id}
</foreach>
</select>
3.编写测试代码
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
} @Test
public void test11() throws Exception { SqlSession openSession = getSqlSessionFactory().openSession();
try {
System.out.println("++++++++++---- 1.测试 动态SQL元素:foreach!");
EmployeeMapper_DynamicSQL mapper = openSession.getMapper(EmployeeMapper_DynamicSQL.class); List<Employee> list = mapper.getEmpsByConditionForeach(Arrays.asList(1, 2, 3, 4));
for(Employee e:list)
System.out.println(e); openSession.commit();
} finally {
openSession.close();
} }
测试结果:
++++++++++---- 1.测试 动态SQL元素:foreach!
DEBUG 12-05 16:25:49,085 ==> Preparing: select * from tbl_employee -- where id in (1,5,6) where id in ( ? , ? , ? , ? ) (BaseJdbcLogger.java:145)
DEBUG 12-05 16:25:49,104 ==> Parameters: 1(Integer), 2(Integer), 3(Integer), 4(Integer) (BaseJdbcLogger.java:145)
DEBUG 12-05 16:25:49,106 <== Total: 2 (BaseJdbcLogger.java:145)
Employee{id=1, lastName='Jerry2333', email='233@...', gender='1', dept=null}
Employee{id=4, lastName='葫芦娃', email='葫芦娃@163.com', gender='0', dept=null}
Mybatis3.0_动态SQL元素:foreach-遍历集合_的更多相关文章
- Java使用foreach遍历集合元素
Java使用foreach遍历集合元素 1.实例源码 /** * @Title:ForEach.java * @Package:com.you.model * @Description:使用forea ...
- MyBatis从入门到精通(第4章):MyBatis动态SQL【foreach、bind、OGNL用法】
(第4章):MyBatis动态SQL[foreach.bind.OGNL用法] 4.4 foreach 用法 SQL 语句中有时会使用 IN 关键字,例如 id in (1,2,3).可以使用 ${i ...
- MyBatis中动态SQL元素的使用
掌握MyBatis中动态SQL元素的使用 if choose(when,otherwise) trim where set foreach <SQL>和<include> 在应 ...
- ForEach遍历集合、 集合容器
ForEach遍历集合 foreach循环是一种更加简洁的for循环,也称增强for循环,能用于遍历数组或集合中的元素. 格式: for(容器元素类型 临时变量:容器变量){ 执行语句} 从上面格式可 ...
- Mybatis学习笔记14 - 动态sql之foreach标签
一.查询给定集合中员工id对应的所有员工信息 示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import ...
- MyBatis从入门到精通(八):MyBatis动态Sql之foreach标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用foreach ...
- mybatis动态sql之foreach标签
foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量.它也允许你指定开头与结尾的字符串以及在迭代结果之间放置分隔符.这个元素是很 ...
- 关于for与forEach遍历集合中对集合进行操作的问题
遍历List集合,在循环中再对List集合进行操作,有时候会遇到ConcurrentModificationException(并发修改异常);其实只有在forEach循环集合再对集合操作会发生异常: ...
- JSTL详解(常用标签以及c:forEach遍历集合)
JSTL标签 一. JSTL的简介 1. 什么是JSTL 2. JSTL常用标签库 3. JSTL使用步骤 二. 核心标签库常用标签 1. c: set 标签 2. c: out 标签 3. c: i ...
随机推荐
- consul服务注册与服务发现的巨坑
最近使用consul作为项目的服务注册与服务发现的基础功能.在塔建集群使用中遇到一些坑,下面一个个的记录下来. consul集群多node consul集群的node也就是我们所说的consul实例. ...
- 机器学习之径向基神经网络(RBF NN)
本文基于台大机器学习技法系列课程进行的笔记总结. 主要内容如下图所示: 首先介绍一下径向基函数网络的Hypothesis和网络的结构,然后介绍径向基神经网络学习算法,以及利用K-means进行的学习, ...
- python虚拟环境的配置: virtualenv 和 virtualenvwrapper-win 的用法
版本:python37, virtualenv==16.7.8, virtualenvwrapper-win==1.2.5 pip37 install virtualenv 安装支持虚拟环境的包,注意 ...
- Keras.NET
[翻译]Keras.NET简介 - 高级神经网络API in C# Keras.NET是一个高级神经网络API,它使用C#编写,并带有Python绑定,可以在Tensorflow.CNTK或The ...
- 19-js策略模式
var PriceStrategy = function() { var stragtegy = { return30: function(price) { return +price + parse ...
- 设置linux系统时间的方法
尝试了好多,都是因为权限问题失败,但是总结出了几种思路: 1 通过linux指令进行设置: date -s "20091112 18:30:50" &&hwcloc ...
- gitlab 重置密码
sudo gitlab-rails console production --------------------------------------------------------------- ...
- Java基础笔试练习(五)
1.以下关于Integer与int的区别错误的是? A.int是java提供的8种原始数据类型之一 B.Integer是java为int提供的封装类 C.int的默认值为0 D.Integer的默认值 ...
- Python开发【第二章】:模块和运算符
一.模块初识: Python有大量的模块,从而使得开发Python程序非常简洁.类库有包括三中: Python内部提供的模块 业内开源的模块 程序员自己开发的模块 1.Python内部提供一个 sys ...
- PB笔记之数据窗口行不能编辑的原因
这里不打勾就不能编辑行