问题:如何根据List中嵌套的Map拼装SQL语句?
dao层:
List<DeviceDetail> selectByNameLogicId(List<Map<String, Object>> device);
对应的mapper.xml
<select id="selectByNameLogicId" parameterType="java.util.ArrayList" resultType="DeviceDetail">
select * from device_detail
<where>
(device_name,logic_id) in
<foreach collection="list" item="item" open="(" close=")" separator=",">
(#{item.deviceName},#{item.logicId})
</foreach>
</where>
</select>
拼装到SQL中的实际数据
List<Map<String, Object>> device = new ArrayList<>();
for (int i = 0; i < 2 ; i++) {
Map<String, Object> map = new HashMap<>();
map.put("deviceName", "摄像头");
map.put("logicId", 1 + i);
device.add(map);
}
List<DeviceDetail> list = deviceDetailMapper.selectByNameLogicId(device);