1. 当查询的参数只有一个时
findByIds(List<Long> ids)
1.1 如果参数的类型是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)
1.2 如果参数的类型是Array,则在使用时,collection属性要必须指定为 array
<select id="findByIdsMap" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from tabs where ID in <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> </select>
2. 当查询的参数有多个时,例如 findByIds(String name, Long[] ids)
这种情况需要特别注意,在传参数时,一定要改用Map方式, 这样在collection属性可以指定名称
Class : Service
/** * 根据fid、rid、name查询AirCon,fid存在则根据fid查询、rid存在则根据rid查询、name存在则根据name查询、 * 都不存在则查询全表 */ @Override public List<AirCon> getAirCons(Integer fid, Integer rid, String name) { Map<String, Object> map = new HashMap<String, Object>(); map.put("fid", fid); map.put("rid", rid); map.put("name", name); map.put("ids", null); return airConDao.getAirCons(map);
Inteface : Dao
/** * 根据fid、rid、name、ids(id的集合)查询AirCon,fid存在则根据fid查询、rid存在则根据rid查询、 * name存在则根据name查询、ids不为空则根据id的集合查询,都不存在则查询全表 * * @author Liang * * 2017年4月19日 */ List<AirCon> getAirCons(Map<String, Object> map);
XML : Dao
<select id="getAirCons" resultType="com.xindatai.ibs.environ.device.bean.AirCon"> SELECT id,rid,fid,logicid,`name`,icon,`type`,gwIP,gwPort,modbus_addr AS modbusAddr,`power`,wind,temp,conn_status AS connStatus,update_time AS updateTime,create_time AS createTime FROM aircon <where> <if test="fid != null"> fid = #{fid} </if> <if test="rid != null"> AND rid = #{rid} </if> <if test="name != null and name != ''"> AND name LIKE CONCAT('%',name,'%') </if> <if test="ids != null"> id IN <foreach collection="ids" close=")" index="index" item="item" open="(" separator=","> #{item} </foreach> </if> </where> </select>
啦啦啦
本文介绍使用MyBatis进行批量查询的方法,包括如何通过不同的参数类型(如List和Array)进行IN条件查询,以及如何处理多个查询参数的情况。特别强调了在使用多个查询参数时应采用Map方式传递参数。
784

被折叠的 条评论
为什么被折叠?



