数据库满足条件的有多个值,list遍历出来却只拿到一条记录,这是什么情况 各位大神

数据库查询到的值
图片说明

遍历却才能到一个值
图片说明

        List logsId =null;//获取ATTR表记录条件为"是"的ID
        if (isUrgencyOf==true){
            DiaDispatchingLogsAttrExample attrExample = new DiaDispatchingLogsAttrExample();
            List<DiaDispatchingLogsAttr> attrList = diaDispatchingLogsAttrMapper.selectByExample(attrExample);
            for (DiaDispatchingLogsAttr listAttr:attrList){
                if (listAttr.getAttrValue()!=null && listAttr.getAttrKey().equals("isUrgencyOf") && listAttr.getAttrValue().equals("是")){
                    logsId = Collections.singletonList(listAttr.getLogsId());
                }
            }
        }
        Map<String, List<DiaDispatchingLogs>> keywordMap = new HashMap<>(); // 按关键字将记录组合成Map对象
        Map<String, String> timeMap = new HashMap<>();
        // 查询未完成记录的关键字
        DiaDispatchingLogsExample diaDispatchingLogsExample = new DiaDispatchingLogsExample();
        DiaDispatchingLogsExample.Criteria criteria = diaDispatchingLogsExample.createCriteria();
        criteria.andDispatchAreaIdEqualTo(dispatchAreaId).andDispatchTypeEqualTo(dispatchType);
        if (isUrgencyOf) {//简化判断isUrgencyOf是否为true
            criteria.andLogIdIn(logsId);
        }

4个回答

Collections的singletonList()方法就是返回一个不可变的,长度为1的集合。你在for循环上边打印一下attrList 的size,看看是多少

weixin_44723976
一只超 回复!!????!!: 谢谢大神 可以了
3 个月之前 回复
weixin_44700117
-zyfjava- 回复一只超: 那就换一种写法,先在声明list的时候创建对象List<String> logsId =new ArrayList<String>(),之后在for循环中使用logsId .add(listAttr.getLogsId())的方式插入值,这样看看能行吗
3 个月之前 回复
weixin_44723976
一只超 打印出来的就是没经过条件过滤出来的那些数据
3 个月之前 回复
logsId = Collections.singletonList(listAttr.getLogsId());改成logsId.add(listAttr.getLogsId());试试
weixin_44723976
一只超 反而为null了
3 个月之前 回复

你这是在循环里面获取的,获取一次然后有填充了,用 logsId .add(Collections.singletonList(listAttr.getLogsId()));

weixin_44723976
一只超 获取到null了
3 个月之前 回复

Collections.singletonList()返回的同样是不可变的集合,但是这个长度的集合只有1,可以减少内存空间。
可以使用Arrays.asList(strArray)

weixin_44723976
一只超 回复打杂的程序员: 谢谢大神
3 个月之前 回复
weixin_44723976
一只超 回复打杂的程序员: 谢谢大神
3 个月之前 回复
qq_39019765
打杂的程序员 回复一只超: List logsId = Lists.newArrayList(); logsId .add(listAttr.getLogsId())
3 个月之前 回复
qq_39019765
打杂的程序员 回复一只超: logsId .add(listAttr.getLogsId())
3 个月之前 回复
qq_39019765
打杂的程序员 回复一只超: 你申明List logsId加上 List logsId = Lists.newArrayList(); 后面直接用logsId .add(Collections.singletonList(listAttr.getLogsId()));
3 个月之前 回复
weixin_44723976
一只超 大神 我改成logsId = Arrays.asList(listAttr.getLogsId()); 获取到的还是一个
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问