foreach用来赋值的情况

img


  List setmealDishes = setmealDto.getSetmealDishes();
        if (setmealDishes.size() != 0){
        for (SetmealDish setmealDish :setmealDishes){
            setmealDish.setSetmealId(id);
            setmealDish.setCreateTime(LocalDateTime.now());
            setmealDish.setUpdateTime(LocalDateTime.now());
            setmealDish.setCreateUser(BaseContext.getId(request));
            setmealDish.setUpdateUser(BaseContext.getId(request));
            setmealDish.setIsDeleted(0);
            System.out.println(setmealDish.toString());
            System.out.println(setmealDishes.toString());
            }
        //TODO setmealDishes是怎么获取到数据的,不应该是加上setmealDish  ?????
            System.out.println("检测添加到套餐菜品关联表的数据"+setmealDishes);
        setmealDishService.save(setmealDishes);
        }
    }

请问一下,foreach 循环,用这个来赋值的时候,setmealDishes是怎么拿到数据的?为什么调用业务层不是setmealDish
而是setmealDishes ???
下面是控制台打印的数据


```java
SetmealDish(id=null, setmealId=1522212718428295175, dishId=1397850140982161409, name=毛氏红烧肉, price=6800, copies=1, sort=null, createTime=2022-08-08T21:20:00.512, updateTime=2022-08-08T21:20:00.512, createUser=1, updateUser=1, isDeleted=0)
[SetmealDish(id=null, setmealId=1522212718428295175, dishId=1397850140982161409, name=毛氏红烧肉, price=6800, copies=1, sort=null, createTime=2022-08-08T21:20:00.512, updateTime=2022-08-08T21:20:00.512, createUser=1, updateUser=1, isDeleted=0), SetmealDish(id=null, setmealId=null, dishId=1397850392090947585, name=组庵鱼翅, price=4800, copies=1, sort=null, createTime=null, updateTime=null, createUser=null, updateUser=null, isDeleted=null)]
SetmealDish(id=null, setmealId=1522212718428295175, dishId=1397850392090947585, name=组庵鱼翅, price=4800, copies=1, sort=null, createTime=2022-08-08T21:20:00.512, updateTime=2022-08-08T21:20:00.512, createUser=1, updateUser=1, isDeleted=0)
[SetmealDish(id=null, setmealId=1522212718428295175, dishId=1397850140982161409, name=毛氏红烧肉, price=6800, copies=1, sort=null, createTime=2022-08-08T21:20:00.512, updateTime=2022-08-08T21:20:00.512, createUser=1, updateUser=1, isDeleted=0), SetmealDish(id=null, setmealId=1522212718428295175, dishId=1397850392090947585, name=组庵鱼翅, price=4800, copies=1, sort=null, createTime=2022-08-08T21:20:00.512, updateTime=2022-08-08T21:20:00.512, createUser=1, updateUser=1, isDeleted=0)]

```

List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();

这行代码是获取数据的,setmealDishes只是个集合存储的是SetmealDish

看下这篇博客,也许你就懂了,链接:关于foreach能否给数组元素赋值的问题