mybatis中使用in查询时的注意事项
2016-04-22 13:58
435 查看
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>
相关文章推荐
- start.S解析6
- 奋斗吧,程序员——第三章 平生渭水曲,谁识此老翁
- AnyEvent::HTTP 介绍
- 欢迎使用CSDN-markdown编辑器
- Oracle 11g笔记——参数
- 那些年放久了的鸡汤
- mac中的sed用法的区别
- AnyEvent::HTTP 介绍
- AnyEvent::HTTP 介绍
- C++字符串
- 聊聊同步异步、阻塞非阻塞
- ExAllocatePool和ExAllocatePoolWithTag的区别
- 快速排序算法
- Android之手机屏幕朝向
- 框架&Maven
- SVN使用教程总结
- Oracle 11g笔记——后台进程
- selenium问题记录
- 如何让vim编辑器永久显示行号
- Jersey: com.sun.jersey.spi.inject.Errors$ErrorMessagesException