从join selection转换为dto

icnyk63a  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(308)

我有这两张table

我用这个查询得到结果

@Query(value = "SELECT bet.bet, match.name, match.week FROM bet INNER JOIN match ON match.id=bet.match_id WHERE match.week = ?1", nativeQuery = true)
List<Object[]> customQuery(Long week);

到目前为止,这是我检索结果并在以后实际使用它们的唯一方法。为了使用它们,我现在正在使用这个代码

List<Object[]> bets = gr.customQuery(2l);
for (Object[] object : bets) {
    int bet = (BigInteger) object[0];
    String name = (String) object[1];
    int week = (BigInteger) object[2];

    System.out.println(bet + " " + name + " " + week);
}

但是用这种方式对我来说似乎很奇怪。有没有更好的方法直接将结果Map到dto或其他什么。。。

irtuqstp

irtuqstp1#

有一些选择。最直接的方法是定义投影界面,如:

public interface BetDTO {
    Long getBet();
    String getName();
    Integer getWeek();
}

这样,您就可以将查询返回类型更改为:

List<BetDTO> customQuery(Integer week);

剩下的将使用getter。

相关问题