您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它。 我们将从如何设置您的项目开始。

设定

下载Java 14 。 转到Speedment Initializer并下载您的项目骨架(包括pom.xml )。 修改您的以下行
pom.xml文件:

 < maven.compiler.source >14</ maven.compiler.source >  < maven.compiler.target >14</ maven.compiler.target >  ... < plugin > < artifactId >maven-compiler-plugin</ artifactId > < version >3.8.1</ version > < configuration > < release >14</ release > < compilerArgs > --enable-preview </ compilerArgs > </ configuration > </ plugin > 

确保您拥有支持新Java 14功能的最新版本的ide(例如IDEA 2010.1)。

加速加入

速度允许将动态JOIN:ed数据库表作为标准Java流使用。 在本文中,我们将使用示例性的Sakila数据库,其中包含电影,演员,语言等。下载Sakila
这里还是抢泊坞版本在这里 。

借助Speedment,可以轻松地将表,视图和联接转换为标准Java流。 这就是在Java 14中的样子:

 var speedment = new SakilaApplicationBuilder() .withPassword( "sakila" ) .withBundle(JoinBundle. class ) .build(); var joinComponent = speedment.getOrThrow(JoinComponent. class ); var films = speedment.getOrThrow(FilmManager. class ); // Define a Java 14 "record" that can hold a Film and a Language record FilmLanguage(Film film, Language language) {} var join = joinComponent.from(films.getTableIdentifier()) .leftJoinOn(Language.LANGUAGE_ID).equal(Film.LANGUAGE_ID) // Provide the constructor of the Java 14 "record" // to be used to construct Film/Language composites .build(FilmLanguage:: new ); join.stream() .forEach(filmLanguage -> System.out.format( "%s is in %s%n" , filmLanguage.film().getTitle(), filmLanguage.language().getName()) ); 

这将产生以下输出:

 ACADEMY DINOSAUR is in English  ACE GOLDFINGER is in English  ADAPTATION HOLES is in English  ... 

代码分解

from()方法获取我们要使用的第一个表( Film )。 的
innerJoinOn()方法采用我们要连接的第二张表的特定列。 然后, equal()方法从我们要用作连接条件的第一个表中获取一列。 因此,在此示例中,我们将获得匹配的FilmLanguage实体,其中Language.LANGUAGE_ID列等于Film.LANGUAGE_ID

最后, build()将构造我们的Join对象,该对象又可以用于创建Java Streams。 Join对象可以反复使用。

请注意, record FilmLanguage的构造函数是如何在
build()方法。 还请注意如何从记录中获取电影和语言实体(例如filmLanguage.film() )。 与以前的Java版本相比,这是一个很大的改进,在Java版本中,我们不得不提供较长的自定义类,或者使用具有访问器的元组get0()get0()get0() get1()而不是更具描述性的film()language()

JOIN的类型和条件

我们可以使用innerJoinOn() leftJoinOn() rightJoinOn()crossJoin()和表可以使用的条件被接合equal() notEqual() lessThan() lessOrEqual() greaterThan()lessOrEqual()

下一步是什么?

在此处下载开源Java 14。
在此处下载Speedment。
阅读Speedment用户指南中有关JOIN功能的所有内容。

翻译自: https://www.javacodegeeks.com/2020/02/java14-join-database-tables-with-java-14s-new-record.html

Java14:使用Java 14的新记录联接数据库表相关推荐

  1. java联接pg库_Java14:使用Java 14的新记录联接数据库表

    java联接pg库 您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将 ...

  2. Java 14的新功能

    2020年3月17日,Oracle发布了名为Java 14的Java新版本,其中包括许多新功能,工具,安全性,调试和更新的文档方面的改进. 但是,Oracle还向您提供Java的较旧版本,因为它具有向 ...

  3. java实现遍历树形菜单方法——数据库表的创建

    这里主要是oracle数据库表的创建: --创建树形菜单表 create table vote_tree (id number(10) not null,text varchar2(30) not n ...

  4. 新催收系统数据库表设计的小结

    总结下前几个月设计的新催收系统,主要是数据库方面的一个设计. 解决旧催收系统的一个严重的性能问题. 可以讲需要开发新催收系统的根本原因,就是这个. 主因只有一个,就是帐单表h_bills. 这个表包括 ...

  5. java 导出word换行_Java 导出数据库表信息生成Word文档

    一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...

  6. java 数据包含_java – 包含大量数据库表的通用实现

    我正在处理的当前应用程序是一个很大的应用程序.该数据库由300个表组成,并且正在增长.目前它是一个桌面应用程序,但我们正在将它移动到网络上. 我们正在使用的技术是Spring(MVC)Hibernat ...

  7. 你好,了解一下Java 14带来的一系列新功能

    Java 14带来的一系列新功能 Java 14包含比前两个发行版更多的新功能-其中大多数旨在简化编码. 劳尔·加布里埃尔·乌尔玛(Raoul-Gabriel Urma) 下载本文的PDF Java ...

  8. Java 14 有哪些新特性?

    记录为 Java 提供了一种正确实现数据类的能力,不再需要为实现数据类而编写冗长的代码.下面就来看看 Java 14 中的记录有哪些新特性. 作者 | Nathan Esquenazi 译者 | 明明 ...

  9. Java 14 可能带来什么新特性?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | 公众号「开源中国」 JDK/Java 13 在一个月前已 ...

最新文章

  1. android adb命令
  2. C++ Map用法详解
  3. php 自动生成查询密码,PHP自动生成随绝密码
  4. Use Batch Apex
  5. 这些老外的名字你读对了吗?
  6. 内核中的kmalloc函数详解
  7. RMAN异机复制数据库(相同路径)
  8. 进程间通信————有名管道
  9. matlab中quiver,matlab quiver 比例尺
  10. 20190429 - 如何访问 macOS 的 httpd、mysql 等服务
  11. 交换机中对于tagged帧和untagged帧的处理
  12. 学习weka(1):weka软件安装使用教程
  13. 你为什么要去博物馆? 我的理由比较另类
  14. 如何创建强命名程序集(Strong Name Assembly)
  15. 大道至简:大数据、小数据、量化交易
  16. 2D轮转图选角色换衣服
  17. 【arcgis 批量将属性表批量导出成excel】
  18. 2021年起重机械指挥考试技巧及起重机械指挥考试试题
  19. 计算机应用世界排名,全球计算机杂志排名
  20. C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…

热门文章

  1. 欢乐纪中A组赛【2019.8.17】
  2. P1375-小猫【卡特兰数】
  3. POJ3696-The Luckiest number【数论,欧拉定理】
  4. 2016陕西省省赛 ACM Rui and her functions B 二分
  5. Java面试常问计算机网络问题
  6. SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
  7. Spring面试题(70道,史上最全)
  8. csdn颜色字体的改变
  9. 集合中获取元素为什么要进行强制类型转换
  10. super与this关键字的区别