使用spring boot中的JPA操作資料庫
阿新 • • 發佈:2019-12-31
前言
Spring boot中的JPA 使用的同學都會感覺到他的強大,簡直就是神器一般,通俗的說,根本不需要你寫sql,這就幫你節省了很多時間,那麼下面我們來一起來體驗下這款神器吧。
一、在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>
二、專案配置
在application.yml中填寫資料庫及JPA相關配置資訊(這樣在dev和prod兩個環境是可以共用的),示例如下:
# 多環境配置 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,否則每次執行都會清空資料哦!
編寫好專案配置後,這裡我們可以啟動專案,會報錯如下:
這是因為我沒建立這個庫引起的,那麼我們先把這個庫建立起來,接著我們重新啟動專案就不會報錯了,還幫我們顯示出了建立sql語句,是不是很贊呢,哈哈
三、 資料庫的操作
前面的專案基本搭建完成,下面我們通過增刪改查的一系列操作,來完成資料庫的操作。
1、建立一個實體
建立一個名為Student的類,示例如下:
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; }
2、資料庫操作邏輯編寫
建立一個名為StudentResponstory的介面,繼承JPAResponstory,示例如下:
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的類,通過增刪改查操作,來實現庫的操作邏輯,具體示例程式碼如下:
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); } }
通過年齡查詢學生查詢時,需要在介面中新增如下方法:
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的使用介紹完,有興趣的同學可以自行嘗試。
&n