mybatis查询的foreach语句中list嵌套map

问题:如何根据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);