SpringData JPA只是Spring Data中的一個子模塊,JPA是一套標準接口。而Hibernate是JPA的實現,Spring Data JPA 底層默認實現是使用Hibernate。Spring Data JPA 的首個接口就是 Repository,它是一個標記接口。只要咱們的接口實現這個接口,那麼咱們就至關於在使用 Spring Data JPA了。html
<!-- SpringBoot依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependency> <!-- 引入lombok 依賴 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <!--Web必要的--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--spring data jpa--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- MySQL的java依賴 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
#服務端容器的配置 server: port: 8218 tomcat: uri-encoding: UTF-8 servlet: context-path: / #數據庫配置 url: 數據庫登陸地址 username: #數據庫登陸帳號 password: #數據庫登陸密碼 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: # 其主要做用是:自動建立、更新、驗證數據庫表結構 # ddl-auto: create ## 每次加載hibernate時都會刪除上一次的生成的表,而後再從新來生成新表,哪怕兩次沒有任何改變也要這樣執行 # ddl-auto: update ## 第一次加載hibernate時根據model類會自動創建起表的結構(前提是先創建好數據庫), ## 之後加載hibernate時根據model類自動更新表結構,即便表結構改變了但表中的行仍然存在不會刪除之前的行。 ## 要注意的是當部署到服務器後,表結構是不會被立刻創建起來的,是要等應用第一次運行起來後纔會。 ddl-auto: validate ## 每次加載hibernate時,驗證建立數據庫表結構,只會和數據庫中的表進行比較,不會建立新表,可是會插入新值 # ddl-auto: none ## 啓動時不作任何操做 naming: strategy: org.hibernate.cfg.ImprovedNamingStrategy # 生成的數據表的列的映射策略 physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl show-sql: true
@Entity @Table(name = "sys_upms_user") @Data public class User { @Id // 說明該屬性做爲該表的主鍵 @Column(name = "id", unique = true, nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column private String userName; @Column private String password; @Column private Integer creator; @Column private Date createTime; @Column private Integer modifier; @Column private Date updateTime; @Column private String remark; }
JPA規範註解坐落在javax.persistence
包下,@Id註解必定不要引用錯了,不然會報錯。@GeneratedValue(strategy = GenerationType.IDENTITY)自增策略,不須要映射的字段能夠經過@Transient註解排除掉java
常見的幾種自增策略mysql
建立UserRepository數據訪問層接口,須要繼承JpaRepository<T,K>web
public interface UserRepository extends JpaRepository<User, Integer> { }
第一個泛型是寫實體類的類型,第二個泛型是主鍵的類型
public interface UserService { List<User> getUserList(); }
@Service public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; @Override public List<User> getUserList() { return userRepository.findAll(); } }
@RestController public class UserController { @Autowired private UserService userService; @RequestMapping("getUser") public List<User> getUserList() { return userService.getUserList(); } }
啓動SpringBoot項目:spring
咱們發現使用 springBoot+Spring Data JPA 的方式,不須要不少的配置,更不須要不少的代碼就能從數據庫中查詢到數據。這裏僅僅只是入門學習,針對的是對Sprng Data JPA 不太熟悉的,若是想要深刻了解,更多內容請參考官方文檔。sql