Mybatis 示例之 foreach (下)
来源:互联网 发布:wkwebview 监听js方法 编辑:程序博客网 时间:2024/05/21 05:05
foreach是用来对3种类型的对象进行循环操作的,关于foreach的基础知识请看:Mybatis 示例之 foreach (上)
注:Map类型没有默认的map,所以不能直接写collection="map",如果这么写,需要保证传入的Map参数有@Param("map")注解。
有关参数的更详细内容,建议看:深入了解MyBatis参数
这节讲的是foreach中map的用法。
map和List,array相比,map是用K,V存储的,在foreach中,使用map时,index属性值为map中的Key的值。
因为map中的Key不同于list,array中的索引,所以会有更丰富的用法。
第一个简单例子:
<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>
可以看到这个例子相当简单,表中需要两个值,正好和K,V对应,因而map中的一个K,V就对应一条数据,如果map中有多个K,V,就会保存多个结果。
如果map中有两对K,V,那么执行SQL如下:
DEBUG [main] - ==> Preparing: insert into string_string (key, value) values (?, ?) , (?, ?) DEBUG [main] - ==> Parameters: key 1(String), value 1(String), key 2(String), value 2(String)DEBUG [main] - <== Updates: 2
大部分数据库是支持values()()这种形式的插入语句,可以插入多条(相关链接 - 可能需翻墙)。
下面再看一个select的例子:
<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>
可以看到这里用key=value来作为查询条件,对于动态的查询,这种处理方式可以借鉴。一定要注意到$和#的区别,$的参数直接输出,#的参数会被替换为?,然后传入参数值执行。
上述SQL执行日志如下:
DEBUG [main] - ==> Preparing: select count(*) from key_cols where col_a = ? AND col_b = ? DEBUG [main] - ==> Parameters: 22(Integer), 222(Integer)DEBUG [main] - <== Total: 1
最后,如果不考虑元素的顺序和map中Key,map和list,array可以拥有一样的效果,都是存储了多个值,然后循环读取出来。
如果有这方面的问题,欢迎留言提问。若有宝贵意见,欢迎指出。
2 0
- Mybatis 示例之 foreach (下)
- Mybatis 示例之 foreach (下)
- Mybatis 示例之 foreach (下)
- Mybatis 示例之 foreach (下)
- Mybatis 示例之 foreach
- Mybatis 示例之 foreach (上)
- Mybatis 示例之 foreach (上)
- Mybatis 示例之 foreach (上)
- Mybatis 示例之 foreach (上)
- Mybatis 示例之 foreach (上)
- mybatis之foreach
- mybatis之foreach用法
- Mybatis之Foreach
- Mybatis之foreach
- mybatis 动态sql之foreach
- MyBatis 示例之存储过程(一)
- MyBatis 示例之存储过程(二)
- MyBatis 示例之存储过程(三)
- ASP学习笔记2
- c c++中数据在内存的存储
- ubuntu虚拟机局域网访问mysql
- struts2--(3)--一些小的知识---简单数据验证信息回显问题
- 机试中一个投机取巧的方法(先声明一下,我不负任何责任哈)
- Mybatis 示例之 foreach (下)
- shell中判断驱动是否加载
- struts2--(3)--一些小的知识----访问web相关元素
- static_cast, dynamic_cast, reinterpret_cast, const_cast的区别
- Tomcat配置远程调试
- 分享几个机试题目
- 第二类Stirling数
- NOIP2000 计算器的改良
- hdu1080解题报告