您的位置:首页 > 其它

mybatis中使用in查询时的注意事项

2013-07-24 11:38 423 查看
1.当查询的参数只有一个时


findByIds(List<Long>ids)


1.a如果参数的类型是List,则在使用时,collection属性要必须指定为list


<selectid="findByIdsMap"resultMap="BaseResultMap">
Select
<includerefid="Base_Column_List"/>
fromjriawhereIDin
<foreachitem="item"index="index"collection="list"
open="("separator=","close=")">
#{item}
</foreach>
</select>




findByIds(Long[]ids)


1.b如果参数的类型是Array,则在使用时,collection属性要必须指定为array


<selectid="findByIdsMap"resultMap="BaseResultMap">
select
<includerefid="Base_Column_List"/>
fromjriawhereIDin
<foreachitem="item"index="index"collection="array"
open="("separator=","close=")">
#{item}
</foreach>
</select>



2.当查询的参数有多个时,例如findByIds(Stringname,Long[]ids)

这种情况需要特别注意,在传参数时,一定要改用Map方式,这样在collection属性可以指定名称

下面是一个示例


Map<String,Object>params=newHashMap<String,Object>(2);
params.put("name",name);
params.put("ids",ids);
mapper.findByIdsMap(params);

<selectid="findByIdsMap"resultMap="BaseResultMap">
select
<includerefid="Base_Column_List"/>
fromjriawhereIDin
<foreachitem="item"index="index"collection="ids"
open="("separator=","close=")">
#{item}
</foreach>
</select>



完整的示例如下:

例如有一个查询功能,Mapper接口文件定义如下方法:


List<Jria>findByIds(Long...ids);


使用in查询的sql拼装方法如下:


<selectid="findbyIds"resultMap="BaseResultMap">
select
<includerefid="Base_Column_List"/>
fromjriawhereIDin
<foreachitem="item"index="index"collection="array"
open="("separator=","close=")">
#{item}
</foreach>
</select>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: