###1.JPA是什麼?以及相關概述html
@Entity
、 @Table
、@Id
與 @Column
等註解。import javax.persistence.*; import javax.persistence.Id; @Entity @Table(name = "t_user")//數據庫中表名 public class UserEO { @Id @Column(name = "USER_ID")//數據庫中字段名 private String userId; @Column(name = "USER_NAME") private String userName; }
###2.Spring Data JPA是什麼?以及相關概述java
JpaRepository
接口,示例代碼以下:@Repository public interface UserRepository extends JpaRepository<UserEO,String>{//第二個參數是UserEO對應的表的主鍵類型 //直接定義以下方法,不須要寫具體的sql語句 List<UserEO> findByUserName(String userName); //對於自定義操做(好比更新狀態字段爲 ‘1’)使用 @Query註解 @Query("update UserEO u set u.status = '1' where u.userName = :userName void updateStatusByName(String userName); //此方法 須要拼接條件 在實現類中重寫 List<UserEO> findByUserName(Condition condition); }
2.實現類無需顯式實現 UserRepository
,只要命名爲UserRepositoryImpl
便可。 好處在於對於不須要寫sql或者sql語句不復雜(使用 @Query 註解能夠實現的)的方法,不用重寫。 對於須要判斷並拼接查詢條件的方法,咱們能夠在實現類中進行重寫。 示例代碼以下:spring
public List<UserEO> findByUserName(Condition condition) { StringBuilder jpql = new StringBuilder(" select u from userEO u where u.tatus = '1' " ); if (StringUtils.hasText(conditon.getUserName)) { jpql.append(" and u.userName = :userName " ); } //執行 sql .. 返回List集合... }
jar包結構以下圖: sql
關於spring-data-jpa的使用可參考:http://www.javashuo.com/article/p-qxjwoiuy-gq.htmlmongodb
###3.總結數據庫
####不知道爲何,忽然就想更新下!2018年2月27日~ 從maven倉庫搜索 'jpa' 的結果(下圖)能夠看到,JPA的非repository部分已經被Hibernate霸佔了,可怕。 app
本文參考:http://www.lxway.com/528201191.htm http://www.javashuo.com/article/p-qxjwoiuy-gq.html http://www.cnblogs.com/xiaoheike/p/5150553.html https://baike.baidu.com/item/JPA/5660672?fr=aladdin框架