為什么推薦JPA框架?
推薦理由
只需要?jiǎng)?chuàng)建Java類,即可完成對數(shù)據(jù)庫表的維護(hù)
通過HQL即可實(shí)現(xiàn)關(guān)聯(lián)查詢,不需要配置復(fù)雜映射關(guān)系
豐富的api接口,不需要任何代碼,既可實(shí)現(xiàn)常用操作
兼容各種數(shù)據(jù)庫,在使用HQL的情況下可隨意更換數(shù)據(jù)庫
可支持簡單快捷的分頁與排序功能
QA
為什么推薦JPA?
A: JPA的開箱即用,而且目前很多MyBatis的開發(fā)框架越來越想JPA,但是其質(zhì)量又遠(yuǎn)不如JPAJPA必須要配置那些復(fù)雜的OneToMany?OneToOne?ManyToMany?
A: 不需要的,可完成通過hql既可以實(shí)現(xiàn),可完全以普通建表的思路去創(chuàng)建Entity對象JPA實(shí)現(xiàn)動(dòng)態(tài)查詢不夠靈活?
A: 本教程,在本項(xiàng)目中將分享6中查詢的方式,復(fù)雜的場景,直接編寫HQL也基本滿足
JPA實(shí)例教程
使用 JpaRepository
使用JpaRepository可以提供常用的數(shù)據(jù)庫表的操作,非常齊全。
使用JpaRepository自定義查詢
函數(shù)名稱匹配的方式
通過函數(shù)名稱匹配的方式,既可完成查詢功能的實(shí)現(xiàn),不需要寫任何SQL,而且IDEA還可以提示函數(shù)的名稱。可以滿足簡單條件的查詢功能。
自定義HQL的方式
通過自定義Query既可以實(shí)現(xiàn)自定義SQL的查詢。
使用Example實(shí)現(xiàn)動(dòng)態(tài)查詢
JpaRepository中支持通過Example的方式,實(shí)現(xiàn)簡單條件的動(dòng)態(tài)查詢。
? ?
Example是支持動(dòng)態(tài)查詢,相對Matcher方式有限,可滿足簡單的動(dòng)態(tài)查詢要求。
使用Specification實(shí)現(xiàn)動(dòng)態(tài)查詢
JpaSpecificationExecutor中支持通過Specification的方式,可實(shí)現(xiàn)復(fù)雜條件的動(dòng)態(tài)查詢。
??
Specification是支持動(dòng)態(tài)查詢,相對Example,可滿足更加復(fù)雜的動(dòng)態(tài)查詢要求。
使用HQL實(shí)現(xiàn)動(dòng)態(tài)查詢
在沒有配置映射關(guān)系的時(shí)候,只是通過上述的Specification或Example,都只能對單表實(shí)現(xiàn)查詢。因此在一些復(fù)雜的多表關(guān)聯(lián)查詢的時(shí)候,會(huì)比較麻煩。 可通過HQL,自己通過sql實(shí)現(xiàn)關(guān)聯(lián)查詢。
? ??
所有代碼見:?https://github.com/1991wangliang/jpa-demo