使用speedment以Java 8 Stream訪問資料庫
speedment是一個開源持久層框架,類似Hibernate等持久層框架,能夠實現以純Java 8函式式流方式訪問資料庫,而Hibernate等ORM是以物件方式訪問資料庫。
Speedment支援MySQL, PostgreSQL 和 MariaDB等
假設MySQL有以下user表:
查詢第一個名字是 “Adam” 或 “Cecilia” 的使用者,並以使用者名稱排序,取出排名前10個,獲得郵件地址並列印出來:
專案地址:
Speedment支援MySQL, PostgreSQL 和 MariaDB等
假設MySQL有以下user表:
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; <p class="indent"> |
查詢
查詢郵件地址帶有".com"的所有使用者:
users.stream() .filter(EMAIL.endsWith(".com")) .forEach(System.out::println); <p class="indent"> |
查詢第一個名字是 “Adam” 或 “Cecilia” 的使用者,並以使用者名稱排序,取出排名前10個,獲得郵件地址並列印出來:
users.stream() .filter(FIRST_NAME.in("Adam", "Cecilia")) .sorted(USERNAME.comparator()) .limit(10) .map(User::getEmail) .forEach(System.out::println); <p class="indent"> |
新增
建立一個使用者並持久化到資料庫:
users.newEmptyEntity() .setUsername("thorshammer") .setEmail("mastergamer@castle.com") .setPassword("uE8%3KwB0!") .persist(); <p class="indent"> |
更新
查詢到id = 10的使用者並更新密碼
users.stream() .filter(ID.equal(10)) .map(u -> u.setPassword("pA6nLaX1Z")) .forEach(User::update); <p class="indent"> |
刪除
刪除 id = 100的使用者
users.stream() .filter(ID.equal(100)) .forEach(User::remove); <p class="indent"> |
並行查詢
能並行實現一些非常費事的操作,比如查詢 id在10_000和20_000之間的使用者:
users.stream() .parallel() .filter(ID.between(10_000, 20_000)) .forEach(expensiveOperation()); <p class="indent"> |
設定
上面展示了資料庫的CRUD,那麼如何設定Speedment以開始CRUD操作呢?非常簡單:
final Speedment speedment = new JavapotApplication() .withPassword("javapot") // 資料庫密碼 .build(); final Manager<User> users = speedment.managerOf(User.class); <p class="indent"> |
專案地址:
相關文章
- Java 8 徹底改變資料庫訪問Java資料庫
- 使用Speedment實現並行資料庫流並行資料庫
- jmeter 使用 ssh 方式訪問資料庫JMeter資料庫
- 使用Java 8 Stream像操作SQL一樣處理資料(上)JavaSQL
- 使用Java 8 Stream像操作SQL一樣處理資料(下)JavaSQL
- GUI應用程式該以何種方式訪問資料庫?GUI資料庫
- Java8的Stream API使用JavaAPI
- Java 8 StreamJava
- 使用 @NoRepositoryBean 簡化資料庫訪問Bean資料庫
- Java訪問資料庫的具體步驟:Java資料庫
- JDBC資料庫訪問JDBC資料庫
- java 8 Stream,Optional的流庫詳解Java
- Java8 Stream完全使用指南Java
- 使用PowerBuilder同時訪問多個資料庫UI資料庫
- Oracle資料庫訪問控制Oracle資料庫
- 異構資料庫訪問資料庫
- jboss訪問資料庫的問題資料庫
- list轉map,使用java8,stream流Java
- Java 8中的Stream API使用指南JavaAPI
- [開源] .Net 使用 ORM 訪問 華為GaussDB資料庫ORM資料庫
- Java8——Stream流Java
- java 8 特性——stream流Java
- Java8 Lambda表示式與Stream API (二): Stream API的使用JavaAPI
- 外網訪問MySQL資料庫MySql資料庫
- Oracle資料庫限制訪問IPOracle資料庫
- C#訪問MySQL資料庫C#MySql資料庫
- C#訪問SQLite資料庫C#SQLite資料庫
- 訪問HyperSQL資料庫的方法SQL資料庫
- 限制特定IP訪問資料庫資料庫
- 資料庫如何處理大資料訪問資料庫大資料
- 求助:資料庫併發訪問問題資料庫
- Tomcat中訪問資料庫使用屬性檔案問題Tomcat資料庫
- Java Spring中同時訪問多種不同資料庫JavaSpring資料庫
- log4jdbc資料庫訪問日誌框架使用JDBC資料庫框架
- MySQL新增使用者以及資料庫訪問授權MySql資料庫
- 使用sqlnet.ora禁止特定IP訪問資料庫SQL資料庫
- 使用Oracle Net實現限制特定IP訪問資料庫Oracle資料庫
- 本機資料庫資料庫鏈無法訪問遠端資料庫資料庫