springData學習(二) Query註解詳解

2021-09-30 20:57:54 字數 2212 閱讀 9553

@query註解查詢適用於所查詢的資料無法通過關鍵字查詢得到結果的查詢。這種查詢可以擺脫像關鍵字查詢那樣的約束,將查詢直接在相應的介面方法中宣告,結構更為清晰,這是spring data的特有實現。

1.查詢id最大的資料

/**

* 需要注意的是from後面跟的是與表名相對應的實體類名

* 同時返回值不能寫*

* @return

*/@query("select a from student a where a.id = (select max(id) from student e)")

public student getmaxid();

測試類:

@test

public void testgetmaxid()

控制台了列印:說明查詢成功

2.根據name和age查詢資料

@query("select a from student a where a.name = ?1 and a.age = ?2")

public student getstudentbyageandname(string name, int age);

測試類:

@test

public void testgetstudentbyageandname()

需要注意的是:?1是佔位符,需要和方法中所傳遞的引數順序一致。x是從1開始。當然還支援命名引數(推薦使用此方式),如果

@query("select a from student a where a.name = :name and a.age = :age")

public student getstudentbyageandname1(@param("name") string name, @param("age")int age);

如果冒號後面的值和我們定義的值相同。也就是上面說的name和age相同,那麼也可以修改為

@query("select a from student a where a.name = :name and a.age = :age")

public student getstudentbyageandname1(string name, int age);

3.模糊查詢

同樣模糊查詢同樣也支援兩種傳參方式

@query("select a from student a where a.name like %?1%")

public listquerylike(string name);

@query("select a from student a where a.name like %:name%")

public listquerylike1(string name);

4.使用原生sql進行查詢

在@query的是將原生查詢置為false,我們只需要改為true,就可以使用原生sql查詢

測試類:

@test

public void testgetcount()

5.更新刪除操作

在使用query註解來更新和刪除時,必須同時使用@modifying註解和@transactional註解

@transactional

@modifying

@query("update student set name = :name where id = :id")

public void update(string name, int id);

@test

public void testupdate()

需要注意的是@query不支援insert操作

Spring Data 學習筆記

jpa是乙個規範,用於操作各種資料庫。spring data對mongodb的支援。支援方法對映,根據方法規則生成sql進行查詢,方法命名規則參見4 flux findbynameand string name,string spring data mongodb支援在2.2版中引入mongodb的...

Spring Data學習筆記 查詢方法

spring data支援類似hibernate的查詢語句,也可以寫原生sql語句,下面記錄典型的例子。1.repository 是乙個空介面.即是乙個標記介面 2.若我們定義的介面繼承了 repository,則該介面會被 ioc 容器識別為乙個 repository bean.納入到 ioc 容...

指標學習《二》

1 c中直接實現跳轉。a 定義乙個簡單函式指標 void gotoaddr void b 初始化函式指標為一指定絕對位址,gotoaddr void 100000,由於該變數型別為函式指標,所以要強制轉換為函式指標型別後賦值,不然會報型別不匹配的錯誤 c 使用函式指標實現跳轉 gotoaddr 就會...