---恢复内容开始---

http://blog.csdn.net/jiesa/article/details/52185617

foreach属性

属性 描述
item 循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。
具体说明:在list和数组中是其中的对象,在map中是value。
该参数为必选。
collection 要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象用map代替作为键。
当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array,map将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:
如果User有属性List ids。入参是User对象,那么这个collection = "ids"
如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"
上面只是举例,具体collection等于什么,就看你想对那个元素做循环。
该参数为必选。
separator 元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。
open foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。
close foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。
index 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。
<select id="countByUserList" resultType="_int" parameterType="list">
select count(*) from users
<where>
id in
<foreach item="item" collection="list" separator="," open="(" close=")" index="">
#{item.id, jdbcType=NUMERIC}
</foreach>
</where>
</select>

select count(*) from users WHERE id in ( ? , ? )

    <insert id="addList">  

        INSERT INTO DELIVER
(
<include refid="selectAllColumnsSql"/>
) <foreach collection="deliverList" item="item" separator="UNION ALL">
SELECT
#{item.id, jdbcType=NUMERIC},
#{item.name, jdbcType=VARCHAR}
FROM DUAL
</foreach>
</insert>

insert into deliver select ?,? from dual union all select ?,? from dual

<insert id="ins_string_string">
insert into string_string (key, value) values
<foreach item="item" index="key" collection="map"
open="" separator="," close="">(#{key}, #{item})</foreach>
</insert>

insert into string_string (key, value) values (?, ?) , (?, ?)  -- mysql

<select id="sel_key_cols" resultType="int">
select count(*) from key_cols where
<foreach item="item" index="key" collection="map"
open="" separator="AND" close="">${key} = #{item}</foreach>
</select>

select count(*) from key_cols where col_a = ? AND col_b = ?  (一定要注意到$和#的区别,$的参数直接输出,#的参数会被替换为?,然后传入参数值执行。)

 

最新文章

  1. CnBlogs自定义博客样式
  2. linux下生成rsa密钥的方法
  3. python 出入任意多个参数
  4. SVN配置管理(trunk、branches、tags)
  5. Goal driven performance optimization
  6. Hadoop HDFS的常用命令
  7. /usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
  8. 蓝桥杯D1
  9. 使用Log4net记录日志
  10. Java内存区域与对象创建过程
  11. [POJ 3635] Full Tank?
  12. ERP-非财务人员的财务培训教(一.一)------基本会计知识
  13. (Dijkstra) POJ1797 Heavy Transportation
  14. 读书笔记《疯狂人类进化史》,第五章,关于xing ai这件事
  15. [No0000DB]C# FtpClientHelper Ftp客户端上传下载重命名 类封装
  16. 运维监控篇(2)_Zabbix简单的性能调优
  17. 前端(慕课网)笔记二:http协议
  18. [leetcode tree]103. Binary Tree Zigzag Level Order Traversal
  19. Disruptor Java版和.NET版的区别
  20. html5图像、图片处理【转】

热门文章

  1. java中线程安全,线程死锁,线程通信快速入门
  2. Tomcat源码分析 (三)----- 生命周期机制 Lifecycle
  3. jQuery学习和知识点总结归纳
  4. Java学习|Exception和Error有什么区别?
  5. 对平底锅和垃圾的O奖论文的整理和学习[2](2018-02-08发布于知乎)
  6. 使用 php 内部web服务器
  7. 云片RocketMQ实战:Stargate的前世今生
  8. 性能测试学习第七天-----JMeter之linux环境部署篇
  9. 性能测试学习第五天-----Jmeter测试脚本&amp;基础元件使用
  10. git 技术栈