springboot 整合jpa一

jpa 概述

全稱Java Persistence API,通過JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中
JPA提供的技術:

1)ORM映射元數據:JPA支持XML和JDK 5.0註解兩種元數據的形式,元數據描述對象和表之間的映射關係,框架據此將實體對象持久化到數據庫表中;

2)JPA 的API:用來操作實體對象,執行CRUD操作,框架在後臺替我們完成所有的事情,開發者從繁瑣的JDBC和SQL代碼中解脫出來。

3)查詢語言:通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合。

jpa 和hibernate的關係

JPA是規範,Hibernate是框架,JPA是持久化規範,而Hibernate實現了JPA。

在springboot中的 jpa的使用

##實體對象
實體關係映射(ORM)

對象端 數據庫端 annotion
Class Table @Entity @Table(name=“tablename”)
property column @Column(name = “columnname”)
property primary key @Id @GeneratedValue 詳見ID生成策略
@Table(name="t_dept")
@Entity
public class Dept {
	@Id
	@GeneratedValue
	int did;
	String dname;

映射關係

JPA定義了
one-to-one、one-to-many、many-to-one、many-to-many 4種關係。

JPA提供的接口

JpaRepository,最頂層的接口,是一個空的接口,目的是爲了統一所有Repository的類型
CrudRepository :是Repository的子接口,提供CRUD的功能
PagingAndSortingRepository:是CrudRepository的子接口,添加分頁和排序的功能
接口舉例

@Repository
public interface JpaDao extends JpaRepository<RiCheng, Integer> {
	Page<RiCheng> findGoodsListBySnameContaining(String name,Pageable page);
}

jap中的默認查詢方法

Keyword Sample JPQL snippet
Keyword Sample JPQL snippet
And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2
Or findByLastnameOrFirstname … where x.lastname = ?1 or x.firstname = ?2
Is,Equals findByFirstname,findByFirstnameIs,findByFirstnameEquals … where x.firstname = ?1
Between findByStartDateBetween … where x.startDate between ?1 and ?2
LessThan findByAgeLessThan … where x.age < ?1
LessThanEqual findByAgeLessThanEqual … where x.age ⇐ ?1
GreaterThan findByAgeGreaterThan … where x.age > ?1
GreaterThanEqual findByAgeGreaterThanEqual … where x.age >= ?1
After findByStartDateAfter … where x.startDate > ?1
Before findByStartDateBefore … where x.startDate < ?1
IsNull findByAgeIsNull … where x.age is null
IsNotNull,NotNull findByAge(Is)NotNull … where x.age not null
Like findByFirstnameLike … where x.firstname like ?1
NotLike findByFirstnameNotLike … where x.firstname not like ?1
StartingWith findByFirstnameStartingWith … where x.firstname like ?1(parameter bound with appended %)
EndingWith findByFirstnameEndingWith … where x.firstname like ?1(parameter bound with prepended %)
Containing1 findByFirstnameContaining … where x.firstname like ?1(parameter bound wrapped in%)
OrderBy findByAgeOrderByLastnameDesc … where x.age = ?1 order by x.lastname desc
Not findByLastnameNot … where x.lastname <> ?1
In findByAgeIn(Collection ages) … where x.age in ?1
NotIn findByAgeNotIn(Collection age) … where x.age not in ?1
TRUE findByActiveTrue() … where x.active = true
FALSE findByActiveFalse() … where x.active = false
IgnoreCase findByFirstnameIgnoreCase … where UPPER(x.firstame) = UPPER(?1)

jpa的分頁

設置分頁
PageRequest pageRequest = PageRequest.of(1, 3);

傳參:Page findGoodsListBySnameContaining(String name,Pageable page);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章