@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; }
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 註解能夠實現的)的方法,不用重寫。
對於須要判斷並拼接查詢條件的方法,咱們能夠在實現類中進行重寫。
示例代碼以下:html
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包結構以下圖:
java
關於spring-data-jpa的使用可參考:https://www.cnblogs.com/dreamroute/p/5173896.htmlspring
從maven倉庫搜索 'jpa' 的結果(下圖)能夠看到,JPA的非repository部分已經被Hibernate霸佔了,可怕。
sql
本文參考:http://www.lxway.com/528201191.htm
https://www.cnblogs.com/dreamroute/p/5173896.html
http://www.cnblogs.com/xiaoheike/p/5150553.html
https://baike.baidu.com/item/JPA/5660672?fr=aladdinmongodb