我这边查询的时候
table1 与table 2 是一对多的关系
@Query(value = " SELECT f.字段1 as 主键,f.字段2,f.字段3,f.字段4,f.字段5,f.字段6, s.字段1 as 主键 ,s.字段2,s.字段3,s.字段4 FROM `table1` f LEFT JOIN `table2` s on f.id =s.table1_id", nativeQuery = true)
List<po对象> findTable1();
用这种方式查询的时候,需要把table1Po里面的table2Po平铺出来,如下:
注意:一定要以table2 的id为主键,否则查询出来的值是重复的
@Table(name = "")
@Entity
@Data
public class ...PO {
//这就是 table2 里面的值 ,table2 就是多的那个 ,
//注意:一定要以table2 的id为主键,否则查询出来的值是重复的
@Id
private Long table2Id;
private LocalDateTime table2值1;
private LocalDateTime table2值2;
private LocalDateTime table2值3;
private LocalDateTime table2值4;
private LocalDateTime table2值5;
private LocalDateTime table2值6;
private String table2值7;
//这是table1里面的值, 一的这边
private Long table1Id;
private String table1值1;
private String table1值2;
private String table1值3;
private String table1值4;
private String table1值5;
}
public List<类> findAll() {
List<对象> list= new ArrayList<>();
//分组
Map<Long, List<po对象>> collect = JpaRepository.findTable1().stream()
.collect(Collectors.groupingBy(po对象::getId));
//todo 转换数据
list.add("转换数据");
return list;
}
这时查询出来的值就是多条,用代码分组后组装数据,返回数据
这是我最近写测试的时候用到的方法,因这种方法,不是特别可取。数据量很多的时候,此批量查询时是最快的