`
wzf7065
  • 浏览: 247308 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Mybatis 中的 List Array Map 的foreach 、in

 
阅读更多

原文来源:http://blog.csdn.net/qh_java/article/details/50754271

 

在mybatis 的配置文件中我们经常会用到集合 数组以及map的批量查询,这样我们就会经常用到 foreach 了,首先来看看foreach的属性:

这张图写的很全,很好就那个了你知道的……

知道了这些属性我们就来看看小demo:

1、List<Integer>  IntList   、 List<String> strList   集合中存的是基本类型的

 

[java] view plain copy
 
  1. <select id="dynamicForeachTest" parameterType="java.util.List"  resultMap="Users">  
  2.     select id,name from t_blog where id in  
  3.     <foreach collection="list" index="index" item="item" open="(" separator="," close=")">  
  4.         #{item}  
  5.     </foreach>  
  6. </select>  
其中的传的参数是List集合所以collection 的值直接使用了list 来代替而index 就是这个集合遍历的索引值,item 就是list当前索引位置的值 open 和close 成对出现,就是开始和结束的符号,而separator 就是分隔符。

 

2、List<Obect>  objList 、List<Users>  userList 引用类型的数据

 

[java] view plain copy
 
  1. package soufun.com;  
  2. /** 
  3.  *@author WHD 
  4.  *data 2016年2月27日 
  5.  */  
  6. public class Users {  
  7. private int id;  
  8. private String name;  
  9. public int getId() {  
  10.     return id;  
  11. }  
  12. public void setId(int id) {  
  13.     this.id = id;  
  14. }  
  15. public String getName() {  
  16.     return name;  
  17. }  
  18. public void setName(String name) {  
  19.     this.name = name;  
  20. }  
  21.   
  22. }  
以这个类为例来看看:

 

 

[java] view plain copy
 
  1. <select id="dynamicForeachTest" parameterType="java.util.List" resultMap="Users">  
  2.     select id,name from t_blog where id in  
  3.     <foreach collection="list" index="index" item="item" open="(" separator="," close=")">  
  4.         #{item.id}  
  5.     </foreach>  
  6. </select>  

 

循环插入

 

[java] view plain copy
 
  1. insert into t_blog(id,name) values  
  2. <foreach collection="list" item="item" index="index" separator=",">    
  3.     (#{item.id},#{item.name})  
  4. </foreach>  

 

 

到这里都结束了,但还有个小事说一下,那就是in 的那个遍历,一般我们都是使用foreach 来组装 的但是有看到这样写的:

String  name ="'w1','w2','w3','w4'";

 

[java] view plain copy
 
  1. <select id="getByMap" resultMap="Users">  
  2.  SELECT *  FROM t_blog  where  name in (${name})     
  3.  </select>  
这就是自己组装了 in的字符串,而没有使用mybatis的foreach 来组装其实是一样的。

3、Map的使用,如果用Map做参数,则处理的方式和传一个基本变量一样直接引用就ok

 

[java] view plain copy
 
  1. <select id="selectjdnotconfirmorder" parameterType="java.util.Map" resultMap="result">  
  2.         select bzOrderId,jdOrderId,name,mobile,success from jdorderinfo where jdIsOrder = ${notSubmit} and success =${success}  
  3.     </select>  
这个sql中参数类型是Map,map参数如下:

 

 

[java] view plain copy
 
  1. Map<String,Integer> hashMap= new HashMap<String,Integer>();  
  2.         hashMap.put("notSubmit", notSubmit);  
  3.         hashMap.put("success", state);  

4、mybatis中的# 和$ 的区别,#的变量是带单引号的而$是不带单引号的,就比如上面的notSubmit 和success两个变量是int型的所以不用#而是$,因为是数字而不是字符。

 

 

 

分享到:
评论

相关推荐

    测试mybatis里foreach用法

    在MyBatis中,`&lt;foreach&gt;`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`&lt;foreach&gt;`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...

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

    在MyBatis中,处理集合参数如list、array以及map是非常常见的操作。这些参数通常用于构建动态SQL,特别是当需要在`IN`语句中使用多个值时。下面将详细解释如何在MyBatis中使用这些参数类型。 1. **List参数**: 当...

    MyBatis中Foreach参数问题.doc

    ### MyBatis中Foreach参数问题详解 #### 一、问题背景 在使用MyBatis进行数据库操作时,经常会遇到一些参数传递的问题,特别是在使用`foreach`语句处理集合数据时,很容易出现“Parameter 'xxxList' not found. ...

    mybatis 中 foreach collection的用法小结(三种)

    情况三:传入的参数是多个时,我们需要把它们封装成一个 Map,collection 属性的值就是传入的 List 或 array 对象在自己封装的 Map 里面的 key。 foreach 语句是 MyBatis 中一个非常有用的语句,它可以帮助我们简洁...

    详解mybatis foreach collection示例

    MyBatis foreach collection是一个非常强大的功能,它允许开发者动态构建In集合条件查询。该功能可以指定一个集合,声明集合项和索引变量,这些变量可以在元素体内使用。此外,该功能还允许开发者指定开放和关闭的...

    MyBatis的foreach语句详解

    MyBatis的`foreach`语句是其动态SQL功能中的一个重要组成部分,主要用于处理SQL语句中的循环和集合数据。在数据库操作中,特别是在构建`IN`条件时,`foreach`非常实用,它可以避免手动拼接SQL字符串,提高代码的...

    Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf

    在XML中,可以使用foreach循环来遍历List中的每个元素: ```xml &lt;select id="selectList" resultMap="BaseResultMap"&gt; select * from user_info where status = 1 and user_id in &lt;foreach collection="list" ...

    springmybatis

    mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现...

    Mybatis 传输List的实现代码

    本文将详细讲解如何在 MyBatis 中实现通过 List 或 Array 传递参数来执行查询操作。 首先,当查询的参数只有一个,如一个 List&lt;Long&gt; 或 Long[],我们可以利用 MyBatis 的 `&lt;foreach&gt;` 标签来遍历集合。下面以 `...

    关于 MyBatis 我总结了 10 种通用的写法.docx

    如果传入的参数是多个,那么需要将它们封装成一个Map,然后collection属性值就是传入的List或array对象在自己封装的map里面的key。 4. choose标签的使用 choose标签是MyBatis中一个非常有用的标签,用于按顺序将...

    mybatis中批量插入的两种方式(高效插入)

    - `collection`: 必须指定,用于确定集合来源,可能是`list`、`array` 或者在多参数情况下封装的`Map`。 - `open`: SQL语句的开始字符。 - `separator`: 每次迭代之间的分隔符。 - `close`: SQL语句的结束字符。 ...

    MyBatis 深入浅出-动态SQL

    &lt;foreach item="item" index="index" collection="array" open="(" separator="," close=")"&gt; #{item} &lt;/foreach&gt; ``` - **当传入参数是多个时,需要将它们封装成一个Map**: ```xml ...

    mybatis常用语句和lyaui 多条件查询加分页

    作为入参时,`List`对象默认使用`list`作为键,数组对象使用`array`作为键,Map对象需要自定义键。 ##### 3. 修改用户 - **接口定义**: ```java /** * 修改用户根据userId */ public int updateUsersById(Users...

    MyBatis动态标签.pdf

    `foreach`标签主要用于构建`IN`条件中,它可以在SQL语句中迭代一个集合。 ##### 5.1 `foreach`标签的基本语法 ```xml &lt;foreach collection="list" item="item" index="index" open="(" separator="," close=")"&gt; #...

    MyBatis批量插入(insert)数据操作

    `foreach`标签是MyBatis提供的循环构造SQL语句的工具,它可以迭代任何集合类型的数据,包括List、Set等。`collection`属性的值取决于传入参数的类型,例如: - 如果是List,`collection`应为`list` - 如果是数组...

    Mybatis数据批量插入如何实现

    在Mybatis中,可以使用foreach标签来实现数据批量插入。foreach标签可以对一个集合进行迭代,并生成相应的SQL语句。下面是一个简单的示例: ```xml insert into user(username, birthday, sex, address) VALUES ...

    详解MyBatis 常用写法

    其中,collection传入的List或Array或自己封装的Map;item是集合中元素迭代时的别名;index是集合中元素迭代的索引;open是where后面表示以什么开始,如以‘('开始;separator是表示在每次进行迭代时的分隔符;...

    MyBatis批量插入数据过程解析

    foreach标签的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有item、index、collection、open、separator、close。item表示集合中每一个元素进行迭代时的别名,index指 定一个...

    7.深圳各公司JAVA面试题综合

    - List、Set、Map接口:理解它们的特点,如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap的实现和使用。 - 集合的遍历方式:foreach循环、迭代器和ListIterator的区别。 - 集合与数组的转换:掌握...

Global site tag (gtag.js) - Google Analytics