转载自:https://www.cnblogs.com/juncaoit/p/7789034.html
springBoot的数据库操作
一:操作数据库起步
1.Spring-Data-Jpa
JPA定义了对象持久化的标准。
目前实现了有Hibernate,TopLink
2.pom添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3.对jps进行配置
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3308/people?useSSL=false
username: root
password: 123456
jpa:
hibernate:
ddl-auto: create
show-sql: true
4.新建一个people的数据库
CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
不然,程序会报未发现数据库。
但是,表不需要新建,这个通过类就可以生成。
5.student的类
可以映射成数据库的字段。
Entity注解表示:类对应一个数据库的一个表。
package com.aspirant.springboot; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; @Entity
public class Student { @Id
@GeneratedValue
private Integer id;
private String name;
private Integer age; public Student(){ } public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}
}
6.自动生成数据库
7.注意点
配置文件的ddi-auto:create
意思的每次启动的时候都会把数据库清空。
ddl-auto:update
如果没有表,会自动创建,但是如果里面有数据,就不会清空数据。
二:操作数据的API
1.新建类(继续使用上面的Student.java类)
2.新建接口
package com.aspirant.springboot; import org.springframework.data.jpa.repository.JpaRepository; public interface StudentResitory extends JpaRepository<Student,Integer> { }
3.新建controller类
查询数据库中的所有
package com.aspirant.springboot; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
public class StudentController { @Autowired
private StudentResitory studentResitory; /**
* 查询数据库中的所有
* @return
*/
@GetMapping(value = "/hello")
public List<Student> getStuList(){
return studentResitory.findAll();
}
}
4.效果
5.添加一个学生记录
/**
* 添加一个学生记录
*/
@PostMapping(value = "/hello")
public Student addStu(@RequestParam("name") String name,@RequestParam("age") Integer age){
Student stu=new Student();
stu.setName(name);
stu.setAge(age);
return studentResitory.save(stu);
}
6.查询一个人,根据id
/**
* 查询一个学生,根据字段id
*/
@GetMapping(value = "/hello/{id}")
public Student getStu(@PathVariable("id") Integer id){
return studentResitory.findOne(id);
}
7.更新
/**
* 更新数据库
*/
@PutMapping(value = "/hello/{id}")
public Student updateStu(@PathVariable("id") Integer id,
@RequestParam("name") String name,
@RequestParam("age") Integer age ){
Student stu=new Student();
stu.setId(id);
stu.setName(name);
stu.setAge(age);
return studentResitory.save(stu);
}
8.删除
/**
* 删除数据
*/
@DeleteMapping(value = "/hello/{id}")
public void deleteStu(@PathVariable("id") Integer id){
studentResitory.delete(id);
}
三:扩展
1.通过年龄还来查询
2.扩展接口
package com.aspirant.springboot; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface StudentResitory extends JpaRepository<Student,Integer> { //根据年龄来查询数据
public List<Student> findByAge(Integer age);
}
3.程序
/**
* 根据年龄进行查询
*/
@GetMapping(value = "/hello/age/{age}")
public List<Student> getStuList(@PathVariable("age") Integer age){
return studentResitory.findByAge(age);
}