建设银行保定分行网站,文字图片在线制作生成,创办网站需要什么,网页设计页面代码是否曾经想过如何将联接的数据库表转换为Java Stream#xff1f; 阅读这篇简短的文章#xff0c;并了解如何使用Speedment Stream ORM完成它。 我们将从Java 8示例开始#xff0c;然后研究Java 11的改进。 Java 8和JOIN 速度允许将动态JOIN#xff1a;ed数据库表作为标准J… 是否曾经想过如何将联接的数据库表转换为Java Stream 阅读这篇简短的文章并了解如何使用Speedment Stream ORM完成它。 我们将从Java 8示例开始然后研究Java 11的改进。 Java 8和JOIN 速度允许将动态JOINed数据库表作为标准Java流使用。 我们首先来看一个使用Sakila示例数据库的Java 8解决方案 Speedment app ...;JoinComponent joinComponent app.getOrThrow(JoinComponent.class);JoinTuple2OfNullablesLanguage, Film join joinComponent.from(LanguageManager.IDENTIFIER).innerJoinOn(Film.LANGUAGE_ID).equal(Language.LANGUAGE_ID).build();join.stream().forEach(System.out::println); 这将产生以下输出经过重新格式化并缩短了可读性 Tuple2OfNullablesImpl {LanguageImpl { languageId 1, name English, ... }, FilmImpl { filmId 1, title ACADEMY DINOSAUR, ... }
}
Tuple2OfNullablesImpl {LanguageImpl { languageId 1, name English, ... }, FilmImpl { filmId 2, title ACE GOLDFINGER, ... }
}
Tuple2OfNullablesImpl {LanguageImpl { languageId 1, name English, ... },FilmImpl { filmId 3, title ADAPTATION HOLES, ... }
}
...Java 11和JOIN 在新的Java版本11中存在Local-Variable-Type-Inference又称var声明这使得使用Speedment编写联接更加容易。 我们不必显式声明join变量的类型 Speedment app ...;JoinComponent joinComponent app.getOrThrow(JoinComponent.class);var join joinComponent.from(LanguageManager.IDENTIFIER).innerJoinOn(Film.LANGUAGE_ID).equal(Language.LANGUAGE_ID).build();join.stream().forEach(System.out::println);代码分解 from()方法获取我们要使用的第一个表 Language 。 innerJoinOn()方法采用我们要连接的第二张表的特定列。 然后 equal()方法从我们要用作连接条件的第一个表中获取一列。 因此在此示例中我们将获得匹配的Language和Film实体其中Film.LANGUAGE_ID列等于Language.LANGUAGE_ID 。 最后 build()将构造我们的Join对象该对象又可以用于创建Java Streams。 Join对象可以反复使用。 JOIN的类型和条件 我们可以使用innerJoinOn() leftJoinOn() rightJoinOn()和crossJoin()和表可以使用的条件被接合equal() notEqual() lessThan() lessOrEqual() greaterThan()和lessOrEqual() 下一步是什么 在此处下载开源Java 11。 在此处下载Speedment。 阅读Speedment用户指南中有关JOIN功能的所有内容。 翻译自: https://www.javacodegeeks.com/2018/12/java-11-join-tables-java-streams.html