mybatis中使用in查询时的注意事项
程序员文章站
2024-03-02 14:37:28
...
- 当查询的参数只有一个时 findByIds(List ids)
1.a 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list
<select id="findByIdsMap" resultMap="BaseResultMap">
Select
<include refid="Base_Column_List" />
from jria where ID in
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
1.b 如果参数的类型是Array,则在使用时,collection属性要必须指定为 array
<select id="findByIdsMap" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from jria where ID in
<foreach item="item" index="index" collection="array"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
2 当查询的参数有多个时,例如 findByIds(String name, Long[] ids)
这种情况需要特别注意,在传参数时,一定要改用Map方式, 这样在collection属性可以指定名称
Map<String, Object> params = new HashMap<String, Object>(2);
params.put("name", name);
params.put("ids", ids);
mapper.findByIdsMap(params);
<select id="findByIdsMap" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from jria where ID in
<foreach item="item" index="index" collection="ids"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
完整的示例如下:
例如有一个查询功能,Mapper接口文件定义如下方法:
List<Jria> findByIds(Long... ids);
<select id="findbyIds" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from jria where ID in
<foreach item="item" index="index" collection="array"
open="(" separator="," close=")">
#{item}
</foreach>
</select>
推荐阅读
-
mybatis中使用in查询时的注意事项
-
Mybatis Plus使用QueryWrapper配置Or的查询方法
-
mybatis中的查询条件允许为空时的sql语句
-
使用asp.net的pageDataSource中时索引问题解决方法
-
使用MySQL MySqldump命令导出数据时的注意事项
-
使用mybatis-generator生成的Example,快速分页查询魔板代码
-
使用mybatis example 和 java 8的特性来实现多表关联且带有查询条件的查询
-
Mybatis中的Criteria条件查询
-
介绍使用WordPress时10个常用的MySQL查询
-
Mybatis中collection和association的使用区别详解