1.前期准备
1.1依赖配置
- 使用
Spring-Data-Jpa
,JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hiberbate、TopLink。Spring-Data-Jpa
是对Hibernate的整合 - 添加依赖
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1.2application.yml配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootdemo
username: root
password: 123456
jpa:
hibernate:
ddl-auto: create
show-sql: true
ddl-auto:
create
表示创建一个空的表,如果有数据则会清空update
表示创建一个空的表,如果有数据不会清空,会保存create-drop
应用停下来时,把表删掉none
什么都不做validate
验证表与数据库字段是否对应,不一致的话则会报错。
show-sql
表示在控制台显示sql语句
1.3数据库设置、相关类实现
- 根据上一部的url,新建
springbootdemo
的数据库 - 新建一个类
package com.antfin.firstboot;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Student {
@Id
@GeneratedValue
private Integer id;
private String stuname;
private String sex;
public Student(){}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
- 此时再运行,就会发现数据库中生成了对应的表。[我这里生成了两张表,还有一张
hibernate_sequence
设置的自增也没有实现,所以手动设置了自增]
2.代码演示
2.1查询所有
- 新建
StudentRepository
接口
import org.springframework.data.jpa.repository.JpaRepository;
public interface StudentRepository extends JpaRepository<Student,Integer> {
}
- 新建
StudentController
类
@RestController
public class StudentController {
@Autowired
private StudentRepository studentRepository;
/**
* 查询所有学生
* @return
*/
@GetMapping(value = "/students")
public List<Student> stuList(){
return studentRepository.findAll();
}
}
- 浏览器输入
http://localhost:8080/students
或者推荐使用postman
2.2增加学生
/**
* 添加一个学生
* @param addr
* @param name
* @return
*/
@PostMapping (value="/addStu")
public Student stuAdd(
@RequestParam("sex") String sex,
@RequestParam("stuname") String stuname){
Student stu=new Student();
stu.setStuname(stuname);
stu.setSex(sex);
return studentRepository.save(stu);
}
2.3通过ID查询学生
/**
* 通过id查询一个学生
*/
@GetMapping(value = "/getStu/{id}")
public Student stuGetByid(
@PathVariable("id") Integer id) {
return studentRepository.findById(id).get();
}
2.4更新一个学生
/**
* 更新一个学生信息
*/
@PutMapping(value="/getStu/{id}")
public Student updateStu(
@PathVariable("id") Integer id,
@RequestParam("sex") String sex,
@RequestParam("stuname") String stuname)
{
Student stu=new Student();
stu.setId(id);
stu.setStuname(stuname);
stu.setSex(sex);
return studentRepository.save(stu);
}
- 唯一要注意的是,使用put提交,postman要选择
x-www-form-urlencoded
2.5删除学生
/**
* 删除学生
*/
@DeleteMapping(value = "/getStu/{id}")
public void updateStu(@PathVariable("id") Integer id){
studentRepository.deleteById(id);
}
2.6自定义查询
自定义通过性别来查询。
StudentRepository
接口中添加方法
public interface StudentRepository extends JpaRepository<Student,Integer> {
//通过性别查询
public List<Student> findBySex(String sex);
}
- 新建方法
/**
* 通过性别查询学生
*/
@GetMapping(value = "/getStuBySex/{sex}")
public List<Student> stuGetBysex(
@PathVariable("sex") String sex) {
return studentRepository.findBySex(sex);
}
- 测试
3.Demo下载
- 楼主建议,刚开始学习,不要追求完美,重要的是走通流程,我的这个Demo花了大概一周的时间,中间无数次出错,终于搞定,希望大家好好利用!
- demo