这篇文章的数据库操作方式是使用JPA。
而且是简单的说明,更多的介绍,在本标签下,后续会再说明一些细节。
一:操作数据库起步
1.Spring-Data-Jpa
JPA定义了对象持久化的标准。
目前实现了有Hibernate,TopLink
2.pom添加依赖
12 5 6org.springframework.boot 3spring-boot-starter-data-jpa 47 mysql 8mysql-connector-java 9
3.对jps进行配置
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: create12 show-sql: true
4.新建一个people的数据库
CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
不然,程序会报未发现数据库。
但是,表不需要新建,这个通过类就可以生成。
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 @Id11 @GeneratedValue12 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{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 @RestController10 public class StudentController {11 12 @Autowired13 private StudentResitory studentResitory;14 15 /**16 * 查询数据库中的所有17 * @return18 */19 @GetMapping(value = "/hello")20 public ListgetStuList(){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 * 查询一个学生,根据字段id3 */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{ 8 9 //根据年龄来查询数据10 public List findByAge(Integer age);11 }
3.程序
1 /**2 * 根据年龄进行查询3 */4 @GetMapping(value = "/hello/age/{age}")5 public ListgetStuList(@PathVariable("age") Integer age){6 return studentResitory.findByAge(age);7 }
4.效果