文档章节

mybatis <foreach>标签

 御赐小鱼干
发布于 2017/08/29 20:33
字数 316
阅读 4
收藏 0

在mybatis的mapper配置文件中,可以利用<foreach>标签实现sql条件的循环,可完成类似批量的sql

mybatis接受的参数分为:(1)基本类型(2)对象(3)List(4)数组(5)Map

 

无论传哪种参数给mybatis,他都会将参数放在一个Map中:

如果传入基本类型:变量名作为key,变量值作为value    此时生成的map只有一个元素。

如果传入对象:        对象的属性名作为key,属性值作为value,

如果传入List:         "list"作为key,这个List是value  (这类参数可以迭代,利用<foreach>标签实现循环)

如果传入数组:       "array"作为key,数组作为value(同上)

如果传入Map:        键值不变。

 

<foreach>标签的用法:

六个参数:

collection:要循环的集合

index:循环索引(不知道啥用。。)

item:集合中的一个元素(item和collection,按foreach循环理解)

open:以什么开始

close:以什么结束

separator:循环内容之间以什么分隔

SELECT * 
		FROM SYS_ORG_INFO 
		WHERE
		SYS_ORG_INFO_ID  IN  
		 <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
				#{item}
		 </foreach>

传入的参数是一个list,比如(7990299,600573,3580409...),这段sql就等于

SELECT * FROM SYS_ORG_INFO  WHERE SYS_ORG_INFO_ID  IN  (7990299)  or (600573) ...

等于

SELECT * FROM SYS_ORG_INFO  WHERE SYS_ORG_INFO_ID  IN  (7990299,600573 ...)

本文转载自:http://blog.csdn.net/gchonghavefun/article/details/8214223

共有 人打赏支持
粉丝 1
博文 2
码字总数 182
作品 0
厦门
程序员
私信 提问
Mybatis(三)动态sql

当我们使用传统JDBC方法去写复杂的SQL语句的时候,需要去进行大量的拼接。常常会因为一个小错误如少写了一个空格导致错误,而且还很难找出错误的原因,Mybatis的动态SQL功能正是为了解决这些...

什么都不懂的小石
2017/12/03
0
0
mybatis(九)强大的动态SQL

上篇文章简单介绍了mybatis的查询,至此,CRUD都已讲完。本文将介绍mybatis强大的动态SQL。 那么,问题来了: 什么是动态SQL? 动态SQL有什么作用?   传统的使用JDBC的方法,相信大家在组合...

LCZ777
2014/12/20
0
0
Mybatis中foreach标签内list为空的解决方案

在前一篇文章通过拦截器Interceptor优化Mybatis的in查询中,我们已经解决了mybatis查询中in()空列表的情况。 但是由于foreach标签中list为空导致的情况并非只有in()空列表一种,另一种常见的...

逍遥jc
2017/12/05
0
0
Mybatis结合Oracle的foreach insert批量插入报错!

最近做一个批量导入的需求,将多条记录批量插入数据库中。解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的for...

GreatQing
2016/08/25
836
0
mybatis批量操作问题总结

1、mybatis接受list参数问题 在http://mybatis.github.io/mybatis-3/zh/dynamic-sql.html#foreach里有一段说明: 写道 注意 你可以传递一个 List 实例或者数组作为参数对象传给 MyBatis。当你...

Elivense
2016/11/30
3
0

没有更多内容

加载失败,请刷新页面

加载更多

MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
2
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
6
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
12
0
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
4
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部