摘要:前言又是小師弟的投稿,確是一個喜歡技術的朋友。以下為原文今天閑的無聊看官方文檔的時候,發現并沒有完整的關鍵字語義翻譯。另外,關注之后在發送可領取免費學習資料。
微信公眾號:一個優秀的廢人前言
如有問題或建議,請后臺留言,我會盡力解決你的問題。
又是小師弟的投稿,確是一個喜歡技術的朋友。以下為原文:
今天閑的無聊看 Spring Data JPA 官方文檔的時候,發現并沒有完整的 Jpa 關鍵字語義翻譯。所以今天寫了一篇中文文檔,如果有錯誤,望大家輕噴。
以下為官方圖片以及示例代碼和注釋 :
首先參照官方文檔創建指定數據庫
CREATE TABLE `demo_jpa` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `last_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `sex` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `email` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `age` int(12) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
示例代碼及注釋<參照以上順序>
/** * @Author: EvilSay * @Date: 2019/2/25 16:15 */ public interface DemoJpaRepositories extends JpaRepository{ //根據firstName與LastName查找(兩者必須在數據庫有) DemoJpa findByFirstNameAndLastName(String firstName, String lastName); //根據firstName或LastName查找(兩者其一有就行) DemoJpa findByLastNameOrFirstName(String lastName,String firstName); //根據firstName查找它是否存在數據庫里<類似與以下關鍵字> //DemoJpa findByFirstName(String firstName); DemoJpa findByFirstNameIs(String firstName); //在Age數值age到age2之間的數據 List findByAgeBetween(Integer age, Integer age2); //小于指定age數值之間的數據 List findByAgeLessThan(Integer age); //小于等于指定age數值的數據 List findByAgeLessThanEqual(Integer age); //大于指定age數值之間的數據 List findByAgeGreaterThan(Integer age); //大于或等于指定age數值之間的數據 List findByAgeGreaterThanEqual(Integer age); //在指定age數值之前的數據類似關鍵字 List findByAgeAfter(Integer age); //在指定age數值之后的數據類似關鍵字 List findByAgeBefore(Integer age); //返回age字段為空的數據 List findByAgeIsNull(); //返回age字段不為空的數據 List findByAgeNotNull(); /** * 該關鍵字我一度以為是類似數據庫的模糊查詢, * 但是我去官方文檔看到它里面并沒有通配符。 * 所以我覺得它類似 * DemoJpa findByFirstName(String firstName); * @see https://docs.spring.io/spring-data/jpa/docs/2.1.5.RELEASE/reference/html/#jpa.repositories */ DemoJpa findByFirstNameLike(String firstName); //同上 List findByFirstNameNotLike(String firstName); //查找數據庫中指定類似的名字(如:輸入一個名字"M" Jpa會返回多個包含M開頭的名字的數據源)<類似數據庫模糊查詢> List findByFirstNameStartingWith(String firstName); //查找數據庫中指定不類似的名字(同上) List findByFirstNameEndingWith(String firstName); //查找包含的指定數據源(這個與以上兩個字段不同的地方在與它必須輸入完整的數據才可以查詢) List findByFirstNameContaining(String firstName); //根據age選取所有的數據源并按照LastName進行升序排序 List findByAgeOrderByLastName(Integer age); //返回不是指定age的所有數據 List findByAgeNot(Integer age); //查找包含多個指定age返回的數據 List findByAgeIn(List age); }
單元測試<已經全部通過>
@SpringBootTest @RunWith(SpringRunner.class) @Slf4j public class DemoJpaRepositoriesTest { @Autowired private DemoJpaRepositories repositories; @Test public void findByFirstNameAndLastName() { DemoJpa demoJpa = repositories.findByFirstNameAndLastName("May", "Eden"); Assert.assertEquals(demoJpa.getFirstName(),"May"); } @Test public void findByLastNameOrFirstName() { DemoJpa demoJpa = repositories.findByLastNameOrFirstName("Geordie", "Eden"); Assert.assertNotEquals(demoJpa.getLastName(),"Eden"); } @Test public void findByFirstNameIs() { DemoJpa demoJpa = repositories.findByFirstNameIs("amy"); Assert.assertNull(demoJpa); } @Test public void findByAgeBetween() { List后語demoJpaList = repositories.findByAgeBetween(15, 17); Assert.assertEquals(3,demoJpaList.size()); } @Test public void findByAgeLessThan() { List demoJpaList = repositories.findByAgeLessThan(17); Assert.assertEquals(2,demoJpaList.size()); } @Test public void findByAgeLessThanEqual() { List demoJpaList = repositories.findByAgeLessThanEqual(17); Assert.assertEquals(3,demoJpaList.size()); } @Test public void findByAgeGreaterThan() { List demoJpaList = repositories.findByAgeGreaterThan(17); Assert.assertEquals(2,demoJpaList.size()); } @Test public void findByAgeGreaterThanEqual() { List demoJpaList = repositories.findByAgeGreaterThanEqual(17); Assert.assertEquals(3,demoJpaList.size()); } @Test public void findByAgeAfter() { List demoJpaList = repositories.findByAgeAfter(17); Assert.assertEquals(2,demoJpaList.size()); } @Test public void findByAgeBefore() { List demoJpaList = repositories.findByAgeBefore(17); Assert.assertEquals(2,demoJpaList.size()); } @Test public void findByAgeIsNull() { List demoJpaList = repositories.findByAgeIsNull(); Assert.assertEquals(0,demoJpaList.size()); } @Test public void findByAgeNotNull() { List demoJpaList = repositories.findByAgeNotNull(); Assert.assertEquals(5,demoJpaList.size()); } @Test public void findByFirstNameLike() { DemoJpa demoJpa = repositories.findByFirstNameLike("May"); Assert.assertNotNull(demoJpa); } @Test public void findByFirstNameNotLike() { } @Test public void findByFirstNameStartingWith() { List demoJpaList = repositories.findByFirstNameStartingWith("May"); Assert.assertEquals(2,demoJpaList.size()); } @Test public void findByFirstNameEndingWith() { List demoJpaList = repositories.findByFirstNameEndingWith("Evil"); Assert.assertEquals(0,demoJpaList.size()); } @Test public void findByFirstNameContaining() { List demoJpaList = repositories.findByFirstNameContaining("hack"); Assert.assertEquals(0,demoJpaList.size()); } @Test public void findByAgeOrderByLastName() { List demoJpaList = repositories.findByAgeOrderByLastName(18); for (DemoJpa demoJpaL : demoJpaList){ log.info("數據結果"+demoJpaL.toString()); } } @Test public void findByAgeNot() { List demoJpaList = repositories.findByAgeNot(20); Assert.assertEquals(5,demoJpaList.size()); } @Test public void findByAgeIn() { List demoJpaList = repositories.findByAgeIn(Arrays.asList(15, 16)); Assert.assertEquals(2,demoJpaList.size()); } }
如果本文對你哪怕有一丁點幫助,請幫忙點好看。你的好看是我堅持寫作的動力。
另外,關注之后在發送 1024 可領取免費學習資料。資料內容詳情請看這篇舊文:Python、C++、Java、Linux、Go、前端、算法資料分享
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73452.html
摘要:容器自動完成裝載,默認的方式是這部分重點在常用模塊的使用以及的底層實現原理。 對于那些想面試高級 Java 崗位的同學來說,除了算法屬于比較「天方夜譚」的題目外,剩下針對實際工作的題目就屬于真正的本事了,熱門技術的細節和難點成為了主要考察的內容。 這里說「天方夜譚」并不是說算法沒用,不切實際,而是想說算法平時其實很少用到,甚至面試官都對自己出的算法題一知半解。 這里總結打磨了 70 道...
摘要:與的關系是什么是官方提出的持久化規范。它為開發人員提供了一種對象關聯映射工具來管理應用中的關系數據。他的出現主要是為了簡化現有的持久化開發工作和整合技術,結束現在,,等框架各自為營的局面。定義了在對數據庫中的對象處理查詢和事務運行時的的。 導讀: 在上篇文章中對Spring MVC常用的一些注解做了簡要的說明,在這篇文章中主要對Spring Data JPA 做一個簡要的說明,并附有一...
摘要:市長信箱郵件查詢服務使用構建工程一直想用做個微服務練練手為后續部署到打下基礎今天比較空閑就開始把部分想法落地了概覽用來練手的應用是一個市長信箱的內容抓取與檢索頁面鑒于我的八卦特質總想了解下周邊的一些投訴信息而成都的市長信箱是一個絕好的信息來 市長信箱郵件查詢服務: 使用SpringBoot構建工程 一直想用SpringBoot做個微服務,練練手, 為后續部署到docker打下基礎. 今...
摘要:不管是還是,表之間的連接查詢,被映射為實體類之間的關聯關系,這樣,如果兩個實體類之間沒有實現關聯關系,你就不能把兩個實體或者表起來查詢。 因為項目需要選擇數據持久化框架,看了一下主要幾個流行的和不流行的框架,對于復雜業務系統,最終的結論是,JOOQ是總體上最好的,可惜不是完全免費,最終選擇JDBC Template。 Hibernate和Mybatis是使用最多的兩個主流框架,而JOO...
閱讀 1049·2021-11-18 10:02
閱讀 1304·2021-09-23 11:22
閱讀 2607·2021-08-21 14:08
閱讀 1636·2019-08-30 15:55
閱讀 1720·2019-08-30 13:45
閱讀 3141·2019-08-29 16:52
閱讀 3092·2019-08-29 12:18
閱讀 1636·2019-08-26 13:36