springboot整合Jpa
阿新 • • 發佈:2019-02-01
一、引入jar包(maven依賴方式)
<!-- 連線mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Jpa -->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
二、新增配置檔案(yml檔案)
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: root
password: 888888
注:以上採用的是springboot預設的資料來源,如果需要使用阿里資料來源採用以下方式:
阿里目前已經為springboot提供了相應的jar包,所有大家不要再引用當初手動整合的Druid。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
yml配置
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: root
password: 888888
三、建立實體類
以上連線資料庫的配置就已經完成,如果專案比較小,我們可以通過hibernate註解的方式自動建立資料庫表;如果專案比較複雜,為了後期方便維護,在此建議還是手動建表。
yml配置
spring: jpa: hibernate: ddl-auto: update #當實體類與表結構不一致,啟動服務時更新資料庫 database-platform: org.hibernate.dialect.MySQL5InnoDBDialect # 預設建立的資料庫表型別為MylSam型別,不支援事務 # 如果需要新增事務,須使用InnoDB型別,就需要加入hibernate方言
例如建立一個User物件(此處@Setter, @Getter,@ToString註解為lombok外掛提供,開發時極大的精簡了實體類的程式碼,推薦使用,沒有安裝使用傳統get/set方法亦可)
@Setter
@Getter
@ToString
@Entity
@Table(name="user" , indexes = {
@Index(name = "idx_username_gender", columnList = "username, gender")
}) // 建立索引(此處只是一個建立聯合索引的例子,單索引同理)
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 註解生成策略
@Column(name = "id", nullable = false, columnDefinition = "int(11) comment '主鍵id'")
private Integer id;
@Column(name = "username", nullable = false, columnDefinition = "varchar(24) comment '使用者名稱'")
private String username;
@Column(name = "age", nullable = false, columnDefinition = "tinyint(3) comment '年齡'")
private Integer age;
@Column(name = "gender", nullable = false, columnDefinition = "tinyint(1) comment '性別 0:男, 1:女'")
private Boolean gender;
}
四、JPA的使用
以上完成了所有的準備工作,整合Jpa的任務基本完成,接下來就是Jpa如何使用
dao層
/**
* 如果只是簡單的增刪改查,只需要繼承JpaRepository介面即可,如果包括較複雜如動態查詢,可再繼承JpaSpecificationExecutor介面
* 由於hibernate封裝了大量的方法,所有很多簡單的操作不再需要我們自己手動寫,具體使用方法接下來會一一總結介紹。
*/
@Repository
public interface UserDao extends JpaRepository<User, Integer>, JpaSpecificationExecutor<Book> {
}