java中for循环得数据如何获取到

请问,我应该改成怎么样才可以获取把下面得FOR循环数据全部取出来
现在只能获取到最后一条数据

图片说明

你这个吧,首先逻辑就有点问题,居然在循环里面查询数据库,这样及其耗费性能,建议用,where xxx in() ,当然你这个错是因为你的集合在循环里面进行了赋值运算,每次赋值会吧上一次覆盖掉,建议你用list的addAll方法。


public List<List<UserOrder>> findCat(){

    List<User> userList = webUsersMapper.selectList( userEntityWrapper );
    //定义一个集合来放list
    List<List<UserOrder>> userOrderList = new ArrayList<List<UserOrder>>();
    for(User user : userList){
        userOrder = webUserOrderMapper.selectList( userOrderEntityWrapper );
        //把每次的查询结果add到userOrderList中
        userOrderList.add(userOrder);
    }
    return userOrderList;
}

public List<UserOrder> findCat(){
    //查询一级下线
    //   int popularizeId = (int) tokenService.getAuthentication().get( "popularizeId" );//获取分销推广id
    int popularizeId = 531571277;//获取分销推广id
    EntityWrapper<User> userEntityWrapper = new EntityWrapper<>(  );
    userEntityWrapper.where( "PARENT_ID={0}",popularizeId );
    List<User> userList = webUsersMapper.selectList( userEntityWrapper );
      List<UserOrder> userOrderList = new ArrayList<UserOrder>();
    for(User user : userList){

        Long userId = user.getId();//获得用户id
        System.out.println("用户id"+ userId );
        EntityWrapper<UserOrder> userOrderEntityWrapper = new EntityWrapper<>(  );
        userOrderEntityWrapper.where( "UID={0}" ,userId);
        webUserOrderMapper.selectList( userOrderEntityWrapper );
                    userOrderList.addAll( webUserOrderMapper.selectList( userOrderEntityWrapper ));
    }
    return userOrderList;
}

你的代码是因为下面这一行赋值错误,List添加数据是用add()和addAll()方法,你直接赋值肯定被覆盖了啊,改成userOrder.addAll( webUserOrderMapper.selectList( userOrderEntityWrapper ));就OK了。图片说明

你这个问题5C就够了,居然用80C

同样的问题,这个userOrder在外面并未实例化,而是在for循环里面循环赋值,每次都会覆盖上次的,所以应该在外面进行实例化,然后for循环里面
userOrder.addAll(查询得到的结果);

不建议在循环中做查询数据库耗时功能,然后最后你集合赋值的时候后一行会覆盖前一行的值 所以最后return的值只有最后一个 ,建议用list.addAll()方法 。这样放回的集合就包含遍历所有的的数据了