Mybatis 中的 List Array Map 的foreach 、in

在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>
其中的传的参数是List集合所以collection 的值直接使用了list 来代替而index 就是这个集合遍历的索引值,item 就是list当前索引位置的值 open 和close 成对出现,就是开始和结束的符号,而separator 就是分隔符。

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>
这就是自己组装了 in的字符串,而没有使用mybatis的foreach 来组装其实是一样的。

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>
这个sql中参数类型是Map,map参数如下:

Map<String,Integer> hashMap= new HashMap<String,Integer>();
		hashMap.put("notSubmit", notSubmit);
		hashMap.put("success", state);

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



  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值