1. 程式人生 > >Spring boot結合Spring-Data-JPA操作MySQL資料庫

Spring boot結合Spring-Data-JPA操作MySQL資料庫

        上一節學習了Spring-boot的基本知識,這一節進一步學習一下Spring-boot結合Spring-Data-JPA操作MySQL資料庫。首先介紹JPA:Java Persistence API,定義了一系列物件持久化的標準,是一個標準。

第一步:在配置檔案中引入Spring-Data-JPA和MySQL的依賴


<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
第二步:在yml配置檔案中配置資料庫的地址及相應的jpa。【在我的本地安裝的MySQL中已經建立了資料庫learn】


spring:
  server:
      port:8081
  datasource:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://127.0.0.1:3306/learn
     username: root
     password: admin
  jpa:
    hibernate:
      ddl-auto: update  # create每次執行都刪除原有表建立新表,update不用每次建立新表
    show-sql: true # 列印SQL語句
第三步:建立資料庫中表對應的實體類student


package com.example.domain;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.Min;

@Entity
public class Student {
    @Id
    @Min(value = 20110001, message = "學號不得小於20110001")
    private int sno;
    private String name;
    private String major;

    public Student(){

    }

    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sno=" + sno +
                ", name='" + name + '\'' +
                ", major='" + major + '\'' +
                '}';
    }
}

此時執行程式,資料庫中已經成功建立了一張表Student


第四步:資料庫操作

(1)檢視資料庫表

新建StudentRespository介面繼承自JpaRepository,然後在StudentController.java中裝配,並呼叫對應方法即可


package com.example.repository;

import com.example.domain.Student;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface StudentRepository extends JpaRepository<Student, Integer>{

    //通過major來選擇學生
    public List<Student> findStudentsByMajor(String major);
}



(2)新增一個學生


(3)根據學號查學生資訊


(4)更新學生資訊


(5)刪除學生資訊


(6)通過專業選擇學生,此時在JpaRepository中並沒有對應的介面,所以需要首先在StudentRepository中定義根據專業選擇學生的介面,然後在StudentController中直接呼叫該方法即可



(7)批量新增學生。由於上面的邏輯都不復雜,所以並沒有建立專門的service來處理資料邏輯,因此在這裡,首先建立一個StudentService類,在其中定義好新增學生的方法,然後在StudentController中呼叫即可



(8)對新增的屬性進行驗證,比如在資料庫中插入學生資訊時,學號不得小於“20110001”。

        對原始碼做以下修改:

        a)在Student實體類的sno屬性上加@Min關鍵字(value為最小值、message為提示資訊);

        b)將StudentController.java中的addStudent方法的引數修改為Student物件,這樣可以使物件屬性增多時不用修改此處的程式碼,同時在引數前加@Valid註解,表示對該引數進行驗證,驗證返回的引數BindingResult。


參考資料:http://www.imooc.com/learn/767

Git程式碼