java实现两张表的关联查询(非数据库语言)

已知我有两张表:

java实现两张表的关联查询(非数据库语言)_第1张图片

java实现两张表的关联查询(非数据库语言)_第2张图片

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

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

解决方法:

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

 List honorList = honors.findAll();
 List obtainedhonorList = obHonors.findAll();
 List list = 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
表现卓越

再来个例子

java实现两张表的关联查询(非数据库语言)_第3张图片

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

java实现两张表的关联查询(非数据库语言)_第4张图片

你可能感兴趣的:(java8,解决的问题,Java)