实体类:
public class Records implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private Integer typeId;
private Double num;
private Double num2;
private Integer houseId;
// 进行逻辑映射
@TableField(exist = false)
private House house;
// 进行逻辑映射
@TableField(exist = false)
private PropertyType propertyType;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date upTime;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date onTime;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date checkTime;
public House getHouse() {
return house;
}
public void setHouse(House house) {
this.house = house;
}
public PropertyType getPropertyType() {
return propertyType;
}
public void setPropertyType(PropertyType propertyType) {
this.propertyType = propertyType;
}
private String meter;
private String remarks;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getTypeId() {
return typeId;
}
public void setTypeId(Integer typeId) {
this.typeId = typeId;
}
public Double getNum() {
return num;
}
public void setNum(Double num) {
this.num = num;
}
public Double getNum2() {
return num2;
}
public void setNum2(Double num2) {
this.num2 = num2;
}
public Integer getHouseId() {
return houseId;
}
public void setHouseId(Integer houseId) {
this.houseId = houseId;
}
public Date getUpTime() {
return upTime;
}
public void setUpTime(Date upTime) {
this.upTime = upTime;
}
public Date getOnTime() {
return onTime;
}
public void setOnTime(Date onTime) {
this.onTime = onTime;
}
public Date getCheckTime() {
return checkTime;
}
public void setCheckTime(Date checkTime) {
this.checkTime = checkTime;
}
public String getMeter() {
return meter;
}
public void setMeter(String meter) {
this.meter = meter;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
@Override
public String toString() {
return "Records{" +
"id=" + id +
", typeId=" + typeId +
", num=" + num +
", num2=" + num2 +
", houseId=" + houseId +
", upTime=" + upTime +
", onTime=" + onTime +
", checkTime=" + checkTime +
", meter=" + meter +
", remarks=" + remarks +
"}";
}
}
控制器:
@RestController
@RequestMapping("/recordsServe")
public class RecordsController {
@Autowired
IRecordsService recordsService;
@Autowired
IHouseService houseService;
@Autowired
IPropertyTypeService propertyTypeService;
@GetMapping
public Result findRecordsPage(Integer currentPage,Integer pageSize,String numbers){
IPage page = new Page<>(currentPage,pageSize);
//条件查询
QueryWrapper qr = new QueryWrapper<>();
IPage recordsIPage = recordsService.page(page);
Long total = recordsIPage.getTotal();
List records = recordsIPage.getRecords();
//遍历对象数组的方法
records.forEach(
record->{
// 遍历设置PropertyType
PropertyType propertyType = propertyTypeService.getById(record.getTypeId());
record.setPropertyType(propertyType);
// 遍历设置House
House house = houseService.getById(record.getHouseId());
record.setHouse(house);
}
);
return Result.getFail();
}
}
原理:
查源码可以知道:List的父类Collection接口继承了Iterable接口。
public interface Collectionextends Iterable { }
而查看Iterable接口源码,可以知道forEach这个方法对输入的参数进行了遍历,并实现了Consumer这个类的accept方法
public interface Iterable{ default void forEach(Consumer super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } } }
点开 Consumer类,查看accept(t)方法
void accept(T t);
于是乎便有了一下代码:
Listrecords = recordsIPage.getRecords(); //遍历对象数组的方法 records.forEach( record->{ // 遍历设置PropertyType PropertyType propertyType = propertyTypeService.getById(record.getTypeId()); record.setPropertyType(propertyType); // 遍历设置House House house = houseService.getById(record.getHouseId()); record.setHouse(house); } );
参考文章:
记forEach(System.out::println)用法_africanviolet的博客-CSDN博客
JAVA的forEach用法_SwTesting的博客-CSDN博客_java中foreach循环用法
forEach(System.out::println) - 简书



