使用spring boot中的JPA操做數據庫

前言

Spring boot中的JPA 使用的同窗都會感受到他的強大,簡直就是神器通常,通俗的說,根本不須要你寫sql,這就幫你節省了不少時間,那麼下面咱們來一塊兒來體驗下這款神器吧。java

1、在pom中添加依賴

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>

2、項目配置

在application.yml中填寫數據庫及JPA相關配置信息(這樣在dev和prod兩個環境是能夠共用的),示例以下:mysql

# 多環境配置
spring:
  profiles:
    active: prod

# 通用數據源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/student_info?serverTimezone=GMT%2B8
    username: root
    password: root
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
  # JPA相關配置
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

說明:接口調試時,jpa中的ddl-auto:要改成update,不然每次運行都會清空數據哦!web

編寫好項目配置後,這裏咱們能夠啓動項目,會報錯以下:spring

 

 

 這是由於我沒建立這個庫引發的,那麼咱們先把這個庫建立起來,接着咱們從新啓動項目就不會報錯了,還幫咱們顯示出了建立sql語句,是否是很贊呢,哈哈sql

 

 

3、 數據庫的操做

前面的項目基本搭建完成,下面咱們經過增刪改查的一系列操做,來完成數據庫的操做。數據庫

一、建立一個實體

建立一個名爲Student的類,示例以下:springboot

package com.rongrong.springboot.demo.student;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
 * @author rongrong
 * @version 1.0
 * @description:
 * @date 2019/12/30 21:24
 */
@Entity
public class Student {

    //主鍵ID
    @Id
    //自增型
    @GeneratedValue
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private String email;
}

二、數據庫操做邏輯編寫

 

 

 建立一個名爲StudentResponstory的接口,繼承JPAResponstory,示例以下:app

package com.rongrong.springboot.demo.student;

import org.springframework.data.jpa.repository.JpaRepository;

/**
 * @author rongrong
 * @version 1.0
 * @description:
 * @date 2019/12/30 22:20
 */
public interface StudentResponstory extends JpaRepository<Student,Integer> {
}

建立一個名爲StudentController的類,經過增刪改查操做,來實現庫的操做邏輯,具體示例代碼以下:spring-boot

package com.rongrong.springboot.demo.student;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author rongrong
 * @version 1.0
 * @description:
 * @date 2019/12/30 20:40
 */
@RestController
public class StudentController {

    @Autowired
    StudentResponstory studentResponstory;

    /**
     * 查詢全部學生列表
     *
     * @return
     */
    @GetMapping("/students")
    public List<Student> sudentFindAll() {
        return studentResponstory.findAll();
    }

    /**
     * 新增一個學生
     *
     * @param name
     * @param age
     * @param sex
     * @param email
     * @return
     */
    @PostMapping("/studentAdd")
    public Student sudentAdd(@RequestParam("name") String name, @RequestParam("age") Integer age,
                             @RequestParam("sex") String sex, @RequestParam("email") String email) {
        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        student.setSex(sex);
        student.setEmail(email);
        //保存和更新都用該方法
        return studentResponstory.save(student);
    }

    /**
     * 經過iD查找一個學生
     *
     * @param id
     * @return
     */
    @GetMapping("/sudentFindOne/{id}")
    public Student sudentFindOne(@PathVariable("id") Integer id) {
        return studentResponstory.findOne(id);
    }

    /**
     * 經過ID更新一個學生信息
     *
     * @param id
     * @param name
     * @param age
     * @param sex
     * @param email
     * @return
     */
    @PutMapping("/sudentUpdate/{id}")
    public Student sudentUpdate(@PathVariable("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age,
                                @RequestParam("sex") String sex, @RequestParam("email") String email) {
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        student.setSex(sex);
        student.setEmail(email);
        //保存和更新都用該方法
        return studentResponstory.save(student);
    }

    /**
     * 經過ID刪除一個學生
     *
     * @param id
     */
    @DeleteMapping("/sudentDelete/{id}")
    public void sudentDelete(@PathVariable("id") Integer id) {
        studentResponstory.delete(id);
    }

    /**
     * 經過年齡查詢學生
     *
     * @param age
     * @return
     */
    @GetMapping("/sudentFindByAge/{age}")
    public List<Student> sudentFindByAge(@PathVariable("age") Integer age) {
        return studentResponstory.findByAge(age);
    }

}

經過年齡查詢學生查詢時,須要在接口中添加以下方法:post

package com.rongrong.springboot.demo.student;

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
 * @author rongrong
 * @version 1.0
 * @description:
 * @date 2019/12/30 22:20
 */
public interface StudentResponstory extends JpaRepository<Student,Integer> {
    List<Student> findByAge(Integer age);
}

再次啓動項目,經過postman進行逐一測試,便可。

項目啓動效果圖

 

 

postman效果圖

到此,spring boot中jpa的使用介紹完,有興趣的同窗能夠自行嘗試。

相關文章
相關標籤/搜索