已知我有两张表:

889cfc79c6f27c428cd33a955cb4cc30.png

9d45db11b5b3b0722ac5d99a63ef3c22.png

我现在查询时需要同时获取两张表对应的数据。比如我想要获取 stuid,honName,obreson三个对应字段。我在脑子里梳理了一下思路,以我目前的知识储备,只能在数据库写一下两个表join,然后在bean层,要么一个里面封装另外一个对象,要么另外写一个类封装一下。

很明显第一个方法有点违反开闭原则,假如这个底层不是我写的那我绝对不能这么干,第二个又有点繁琐,所以我就在思考有没有别的方法。

解决方法:

我想起来了在stream那一块的流的扁平化这一点,立马去实践了一下:

ListhonorList = honors.findAll();

ListobtainedhonorList = obHonors.findAll();

Listlist = obtainedhonorList

.stream()

.flatMap(o->honorList

.stream()

.filter(h->o.getHonid()==h.getHonid())

.map(h->new Object[]{h,o}))

.collect(Collectors.toList());

现在就已经拿到了这样的一组集合

//list

尝试对两个进行一下遍历

for (Object[] o:list

) {

for (int i=0;i

获得的结果为:

奖励1-----

1

表现优秀

奖励2-----

1

表现卓越

再来个例子

72039f3697d6b2aa6ebb504a54615056.png

假如对一张表进行处理之后需要用另一张表存储其中的某些字段,则:

3b68111554b4087bde3d70f86e2ffcd4.png

Logo

一站式 AI 云服务平台

更多推荐