请问,我应该改成怎么样才可以获取把下面得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()方法 。这样放回的集合就包含遍历所有的的数据了