JPA學習整理,包括一對多,多對多的處理方法

2021-10-04 04:24:36 字數 2113 閱讀 2658

最近突然用到jpa的功能,之前沒有接觸過,在這裡單純整理和分享,只是自己的處理方法和思路

1.@data 單純理解是代替了get和set,寫此**可以不用再類中寫get、set方法了,需要引入lombok包

2.@apimodel 是可在swagger頁面顯示的註解

3.@sqldelete(sql = 「update demo set isdelete = 1 where id = ?」) 在執行jpa的刪除操作時,可根據後邊的內容來確定每次刪除時預設的條件,這裡可以理解當傳如id後,每次都將isdelete的字段改為1

4.@where(clause = 「isdelete = 0」) 每次select時,都將預設加上isdelete=0這個條件

5.@dynamicinsert @dynamicupdate 生成的sql就會只輸出set有變化的字段

@data

@entity

@table(name = "demo")

@apimodel(value = "demo 物件")

@sqldelete(sql = "update demo set isdelete = 1 where id = ?")

@where(clause = "isdelete = 0")

@dynamicinsert

@dynamicupdate

@accessors(chain = true)

public class demo implements serializable

@modifying在update中使用

@repository

public inte***ce demodao extends jparepository !='',d.username=:#,1=1) ",

countquery = "select count(*) from demo d left join user_table u on d.username=u.uname where if(:# !='',d.username=:#,1=1)",nativequery=true)

pagefindmanytable(@param("demo") demo demo, pageable pageable);

@query(value="select new com.sncy.evaluateservice.entity.demousermap(d,u) from demo d left join usertable u on d.username=u.uname where d.username=:#")

pagefindmanytablehql(@param("demo") demo demo, pageable pageable);

}

dao層整合jparepository後,泛型中的demo是原本的實體類

1.單錶demo查詢的話,可以直接用findall或者findone來執行

2.多表對多表的情況,可以根據findmanytable方法,編寫原生sql來進行業務操作,這裡返回的是page,可根據自身情況做調整,如果不需要jpa的的分頁,可以直接用list

來接返回值

3.一對多或者多對一的情況,可以根據findmanytablehql使用hql來實現業務流程,這裡需要注意:

select new com.sncy.evaluateservice.entity.demousermap(d,u) from demo d left join usertable u on d.username=u.uname where d.username=:#")

hql中 所有的表名均是類名,不是資料庫表名,返回值demousermap是需要單獨生成乙個實體類,包含需要查詢兩個表的實體類,可看下圖二

JPA雙向一對多 多對一實體配置

需要注意 主鍵要使用jpa策略生成,不然使用級聯操作的時候回多出幾條查詢語句,增加應用和資料庫互動的負擔。t category 為one的一方,t fruit為多的一方 型別表 create table t category id varchar 64 not null primary key,na...

django 一對多,多對多查詢

假設有表的關係如下 1 class classes models.model 2 name models.charfield max length 32 3 institute models.charfield max length 32 4 headteacher models.foreignke...

表關係 一對一,一對多,多對多

可以在資料庫圖表中的表之間建立關係,以顯示乙個表中的列與另乙個表中的列是如何相鏈結的。更好的方法是將有關出版社的資訊在單獨的表,publishers,中只儲存一次。然後可以在titles表中放置乙個引用出版社表中某項的指標。為了確保您的資料同步,可以實施titles和publishers之間的參照完...