快速流媒体

当Java 8最终问世时,我和一些大学开始了一个开源项目,以利用Java 8的流库使整个Java / DB问题进一步向前发展,以便将数据库表视为纯Java 8流。 速度诞生了! 哇,现在我们可以做类型安全的数据库应用程序了,而不必再编写SQL代码了。在上世纪90年代,我们的Java开发人员不得不努力使数据库应用程序正常工作。 有很多编码,调试和调整。 尽管如此,应用程序还是经常面对我们不断增加的痛苦而爆炸。 随着时间的推移,随着更好的语言,JDBC和框架支持,情况逐渐得到改善。 我想我们的开发人员也有所改进,但是对此有不同的看法……



java File流式 遍历 java 流式读取数据库_java File流式 遍历

杜克和尖塔映射流。



Speedment连接到现有数据库并生成Java代码。 然后,我们可以使用生成的代码使用标准Java 8流方便地查询数据库。 随着新版本2.3的问世,我们甚至可以进行并行查询流!

让我们举一些例子,假设我们定义了以下数据库表:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(45) NOT NULL,
  `firstName` varchar(45) DEFAULT NULL,
  `lastName` varchar(45) DEFAULT NULL,
  `email` varchar(45) NOT NULL,
  `password` varchar(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email_UNIQUE` (`email`),
  UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB;

开源数据库MySQL,PostgreSQL和MariaDB免费提供Speedment。 还支持商业数据库(如Oracle)作为企业附加功能。

例子

查询方式

选择所有带有“ .com”邮件地址的用户并打印:

users.stream()
            .filter(EMAIL.endsWith(".com"))
            .forEach(System.out::println);

选择名字为“ Adam”或“ Cecilia”的用户,并按用户名顺序对其进行排序,然后选择其中的前10位并提取电子邮件地址并进行打印。

users.stream()
            .filter(FIRST_NAME.in("Adam", "Cecilia"))
            .sorted(USERNAME.comparator())
            .limit(10)
            .map(User::getEmail)
            .forEach(System.out::println);
创建数据库内容

创建一个新用户并将其持久保存在数据库中:

users.newEmptyEntity()
            .setUsername("thorshammer")
            .setEmail("mastergamer@castle.com")
            .setPassword("uE8%3KwB0!")
            .persist();
更新数据库内容

查找id = 10的用户并更新密码:

users.stream()
            .filter(ID.equal(10))
            .map(u -> u.setPassword("pA6#nLaX1Z"))
            .forEach(User::update);
删除数据库内容

删除ID = 100的用户:

users.stream()
            .filter(ID.equal(100))
            .forEach(User::remove);
新酷玩法:并行查询

做某种昂贵的手术
对于10_000 <= id <20_000的用户并行

users.stream()
            .parallel()
            .filter(ID.between(10_000, 20_000))
            .forEach(expensiveOperation());
设定

上面示例的安装代码:

final Speedment speedment = new JavapotApplication()
            .withPassword("javapot") // Replace with your real DB password
            .build();

        final Manager<User> users = speedment.managerOf(User.class);

加速入门

在GitHub上了解有关如何开始使用Speedment的更多信息。

翻译自: https://www.javacodegeeks.com/2016/04/java-8-use-smart-streams-database-2-minutes.html