1. 程式人生 > >springboot整合Jpa

springboot整合Jpa

一、引入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> {

}