@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 就會...