MyBatis中in的用法小结

来源:互联网 发布:大数据平台监控系统 编辑:程序博客网 时间:2024/06/05 14:25

查询的参数只有IN

findByIds(List<Long> ids)

如果参数的类型是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>
findByIds(Long[] ids)

如果参数的类型是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>

查询的参数有多个

findByIds(String name, Long[] ids)

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

Map<String, Object> params = new HashMap<String, Object>(2);params.put("name", name);//ids与xml中的collection的名字对应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);

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

<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>
0 0