原文来源:http://blog.csdn.net/qh_java/article/details/50754271
在mybatis 的配置文件中我们经常会用到集合 数组以及map的批量查询,这样我们就会经常用到 foreach 了,首先来看看foreach的属性:
这张图写的很全,很好就那个了你知道的……
知道了这些属性我们就来看看小demo:
1、List<Integer> IntList 、 List<String> strList 集合中存的是基本类型的
- <select id="dynamicForeachTest" parameterType="java.util.List" resultMap="Users">
- select id,name from t_blog where id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item}
- </foreach>
- </select>
2、List<Obect> objList 、List<Users> userList 引用类型的数据
- package soufun.com;
- /**
- *@author WHD
- *data 2016年2月27日
- */
- public class Users {
- private int id;
- private String name;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- <select id="dynamicForeachTest" parameterType="java.util.List" resultMap="Users">
- select id,name from t_blog where id in
- <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
- #{item.id}
- </foreach>
- </select>
循环插入
- insert into t_blog(id,name) values
- <foreach collection="list" item="item" index="index" separator=",">
- (#{item.id},#{item.name})
- </foreach>
到这里都结束了,但还有个小事说一下,那就是in 的那个遍历,一般我们都是使用foreach 来组装 的但是有看到这样写的:
String name ="'w1','w2','w3','w4'";
- <select id="getByMap" resultMap="Users">
- SELECT * FROM t_blog where name in (${name})
- </select>
3、Map的使用,如果用Map做参数,则处理的方式和传一个基本变量一样直接引用就ok
- <select id="selectjdnotconfirmorder" parameterType="java.util.Map" resultMap="result">
- select bzOrderId,jdOrderId,name,mobile,success from jdorderinfo where jdIsOrder = ${notSubmit} and success =${success}
- </select>
- Map<String,Integer> hashMap= new HashMap<String,Integer>();
- hashMap.put("notSubmit", notSubmit);
- hashMap.put("success", state);
4、mybatis中的# 和$ 的区别,#的变量是带单引号的而$是不带单引号的,就比如上面的notSubmit 和success两个变量是int型的所以不用#而是$,因为是数字而不是字符。
相关推荐
在MyBatis中,`<foreach>`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`<foreach>`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...
在MyBatis中,处理集合参数如list、array以及map是非常常见的操作。这些参数通常用于构建动态SQL,特别是当需要在`IN`语句中使用多个值时。下面将详细解释如何在MyBatis中使用这些参数类型。 1. **List参数**: 当...
### MyBatis中Foreach参数问题详解 #### 一、问题背景 在使用MyBatis进行数据库操作时,经常会遇到一些参数传递的问题,特别是在使用`foreach`语句处理集合数据时,很容易出现“Parameter 'xxxList' not found. ...
情况三:传入的参数是多个时,我们需要把它们封装成一个 Map,collection 属性的值就是传入的 List 或 array 对象在自己封装的 Map 里面的 key。 foreach 语句是 MyBatis 中一个非常有用的语句,它可以帮助我们简洁...
MyBatis foreach collection是一个非常强大的功能,它允许开发者动态构建In集合条件查询。该功能可以指定一个集合,声明集合项和索引变量,这些变量可以在元素体内使用。此外,该功能还允许开发者指定开放和关闭的...
MyBatis的`foreach`语句是其动态SQL功能中的一个重要组成部分,主要用于处理SQL语句中的循环和集合数据。在数据库操作中,特别是在构建`IN`条件时,`foreach`非常实用,它可以避免手动拼接SQL字符串,提高代码的...
在XML中,可以使用foreach循环来遍历List中的每个元素: ```xml <select id="selectList" resultMap="BaseResultMap"> select * from user_info where status = 1 and user_id in <foreach collection="list" ...
mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现...
本文将详细讲解如何在 MyBatis 中实现通过 List 或 Array 传递参数来执行查询操作。 首先,当查询的参数只有一个,如一个 List<Long> 或 Long[],我们可以利用 MyBatis 的 `<foreach>` 标签来遍历集合。下面以 `...
如果传入的参数是多个,那么需要将它们封装成一个Map,然后collection属性值就是传入的List或array对象在自己封装的map里面的key。 4. choose标签的使用 choose标签是MyBatis中一个非常有用的标签,用于按顺序将...
- `collection`: 必须指定,用于确定集合来源,可能是`list`、`array` 或者在多参数情况下封装的`Map`。 - `open`: SQL语句的开始字符。 - `separator`: 每次迭代之间的分隔符。 - `close`: SQL语句的结束字符。 ...
<foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> ``` - **当传入参数是多个时,需要将它们封装成一个Map**: ```xml ...
作为入参时,`List`对象默认使用`list`作为键,数组对象使用`array`作为键,Map对象需要自定义键。 ##### 3. 修改用户 - **接口定义**: ```java /** * 修改用户根据userId */ public int updateUsersById(Users...
`foreach`标签主要用于构建`IN`条件中,它可以在SQL语句中迭代一个集合。 ##### 5.1 `foreach`标签的基本语法 ```xml <foreach collection="list" item="item" index="index" open="(" separator="," close=")"> #...
`foreach`标签是MyBatis提供的循环构造SQL语句的工具,它可以迭代任何集合类型的数据,包括List、Set等。`collection`属性的值取决于传入参数的类型,例如: - 如果是List,`collection`应为`list` - 如果是数组...
在Mybatis中,可以使用foreach标签来实现数据批量插入。foreach标签可以对一个集合进行迭代,并生成相应的SQL语句。下面是一个简单的示例: ```xml insert into user(username, birthday, sex, address) VALUES ...
其中,collection传入的List或Array或自己封装的Map;item是集合中元素迭代时的别名;index是集合中元素迭代的索引;open是where后面表示以什么开始,如以‘('开始;separator是表示在每次进行迭代时的分隔符;...
foreach标签的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item、index、collection、open、separator、close。item表示集合中每一个元素进行迭代时的别名,index指 定一个...
- List、Set、Map接口:理解它们的特点,如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap的实现和使用。 - 集合的遍历方式:foreach循环、迭代器和ListIterator的区别。 - 集合与数组的转换:掌握...