這篇文章的數據庫操做方式是使用JPA。java
並且是簡單的說明,更多的介紹,在本標籤下,後續會再說明一些細節。mysql
一:操做數據庫起步web
1.Spring-Data-Jpaspring
JPA定義了對象持久化的標準。sql
目前實現了有Hibernate,TopLink數據庫
2.pom添加依賴springboot
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-data-jpa</artifactId> 4 </dependency> 5 6 <dependency> 7 <groupId>mysql</groupId> 8 <artifactId>mysql-connector-java</artifactId> 9 </dependency>
3.對jps進行配置app
1 spring: 2 profiles: 3 active: dev 4 datasource: 5 driver-class-name: com.mysql.jdbc.Driver 6 url: jdbc:mysql://127.0.0.1:3308/people?useSSL=false 7 username: root 8 password: 123456 9 jpa: 10 hibernate: 11 ddl-auto: create 12 show-sql: true
4.新建一個people的數據庫yii
CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;spring-boot
否則,程序會報未發現數據庫。
可是,表不須要新建,這個經過類就能夠生成。
5.student的類
能夠映射成數據庫的字段。
Entity註解表示:類對應一個數據庫的一個表。
1 package com.caojun.springboot; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 7 @Entity 8 public class Student { 9 10 @Id 11 @GeneratedValue 12 private Integer id; 13 private String name; 14 private Integer age; 15 16 public Student(){ 17 18 } 19 20 public Integer getId() { 21 return id; 22 } 23 24 public void setId(Integer id) { 25 this.id = id; 26 } 27 28 public String getName() { 29 return name; 30 } 31 32 public void setName(String name) { 33 this.name = name; 34 } 35 36 public Integer getAge() { 37 return age; 38 } 39 40 public void setAge(Integer age) { 41 this.age = age; 42 } 43 }
6.自動生成數據庫
7.注意點
配置文件的ddi-auto:create
意思的每次啓動的時候都會把數據庫清空。
ddl-auto:update
若是沒有表,會自動建立,可是若是裏面有數據,就不會清空數據。
二:操做數據的API
1.新建類(繼續使用上面的Student.java類)
2.新建接口
1 package com.caojun.springboot; 2 3 import org.springframework.data.jpa.repository.JpaRepository; 4 5 public interface StudentResitory extends JpaRepository<Student,Integer> { 6 }
3.新建controller類
查詢數據庫中的全部
1 package com.caojun.springboot; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.web.bind.annotation.GetMapping; 5 import org.springframework.web.bind.annotation.RestController; 6 7 import java.util.List; 8 9 @RestController 10 public class StudentController { 11 12 @Autowired 13 private StudentResitory studentResitory; 14 15 /** 16 * 查詢數據庫中的全部 17 * @return 18 */ 19 @GetMapping(value = "/hello") 20 public List<Student> getStuList(){ 21 return studentResitory.findAll(); 22 } 23 }
4.效果
5.添加一個學生記錄
1 /** 2 * 添加一個學生記錄 3 */ 4 @PostMapping(value = "/hello") 5 public Student addStu(@RequestParam("name") String name,@RequestParam("age") Integer age){ 6 Student stu=new Student(); 7 stu.setName(name); 8 stu.setAge(age); 9 return studentResitory.save(stu); 10 }
6.效果
7.查詢一我的,根據id
1 /** 2 * 查詢一個學生,根據字段id 3 */ 4 @GetMapping(value = "/hello/{id}") 5 public Student getStu(@PathVariable("id") Integer id){ 6 return studentResitory.findOne(id); 7 }
8.效果
9.更新
1 /** 2 * 更新數據庫 3 */ 4 @PutMapping(value = "/hello/{id}") 5 public Student updateStu(@PathVariable("id") Integer id, 6 @RequestParam("name") String name, 7 @RequestParam("age") Integer age ){ 8 Student stu=new Student(); 9 stu.setId(id); 10 stu.setName(name); 11 stu.setAge(age); 12 return studentResitory.save(stu); 13 }
10.效果
11.刪除
1 /** 2 * 刪除數據 3 */ 4 @DeleteMapping(value = "/hello/{id}") 5 public void deleteStu(@PathVariable("id") Integer id){ 6 studentResitory.delete(id); 7 }
12.效果
三:擴展
1.經過年齡還來查詢
2.擴展接口
這個方法名比較有講究。
1 package com.caojun.springboot; 2 3 import org.springframework.data.jpa.repository.JpaRepository; 4 5 import java.util.List; 6 7 public interface StudentResitory extends JpaRepository<Student,Integer> { 8 9 //根據年齡來查詢數據 10 public List<Student> findByAge(Integer age); 11 }
3.程序
1 /** 2 * 根據年齡進行查詢 3 */ 4 @GetMapping(value = "/hello/age/{age}") 5 public List<Student> getStuList(@PathVariable("age") Integer age){ 6 return studentResitory.findByAge(age); 7 }
4.效果