1.参数实体类如下:
public class EquipmentDto extends PageDTO {
private String keyWord
private List departmentIds;
public String getKeyWord() {
return keyWord;
}
public void setKeyWord(String keyWord) {
this.keyWord = keyWord;
}
public List getDepartmentIds() {
return departmentIds;
}
public void setDepartmentIds(List departmentIds) {
this.departmentIds = departmentIds;
}
2.Mapper
List<EquipmentVO> selectEquipmentByDepartemntAndName(@Param("equipmentDto")EquipmentDto equipmentDto);
3. 想在数据库里查出e.name包含keyWord的departmentIds集合中所有关联的设备
item表示集合中每一个元素进行迭代时的别名,
index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束。
SQL如下:
<select id="selectEquipmentByDepartemntAndName" resultMap="EquipmentVO">
select e.equipment_id,d.name,e.model,e.state,e.number,
e.name as ename
from equipment e
left join department d on e.department_id = d.department_id
<where>
<if test="equipmentDto.keyWord != null">
e.name like concat(concat("%",#{equipmentDto.keyWord}),"%")
</if>
<if test="equipmentDto.departmentIds != null and equipmentDto.departmentIds.size() > 0">
and e.department_id in
<foreach item="item" collection="equipmentDto.departmentIds" separator="," index="index" open="(" close=")" >
#{item}
</foreach>
</if>
</where>
ORDER BY last_check_time DESC
</select>
}```