一、pom.xml文件重引入jpa依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
二、application.yml配置数据源信息
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
type: com.alibaba.druid.pool.DruidDataSource
username: edu
password: 123456
driver-class-name: com.mysql.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
pa.hibernate.ddl-auto是hibernate的配置属性,其主要作用是:自动创建、更新、验证数据库表结构。该参数的几种配置如下:
- create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
- create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
- update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
- validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
三、定义domain对象
package springboot.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter
@Setter
public class Person {
@Id
@GeneratedValue
private Long id;
@Column(name = "name", nullable = true, length = 20)
private String name;
@Column(name = "agee", nullable = true, length = 4)
private int age;
}
四、PersonRepository接口
package springboot.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import springboot.domain.Person;
public interface PersonRepository extends JpaRepository<Person, Long> {
Person findByName(String name);
}
五、写controller接口测试
package springboot.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springboot.domain.Person;
import springboot.repository.PersonRepository;
@RestController
@RequestMapping(value = "person")
public class PerconController {
@Autowired
private PersonRepository personRepository;
@PostMapping(path = "addPerson")
public void addPerson(Person person) {
personRepository.save(person);
}
@DeleteMapping(path = "deletePerson")
public void deletePerson(Long id) {
Person p = new Person();
p.setId(id);
personRepository.delete(p);
}
@GetMapping("getPerson")
public Object getPerson(@RequestParam("name") String name) {
return personRepository.findByName(name);
}
}
六、项目启动信息
项目启动时,检测到数据配置,就会自动给你在数据库创建出相应的表,如下所示:
七、用postman测试
可能因为name是中文,没有解析出来,这里是null,再试试英文能不能解析出来,重新换个英文name(“zhangquandan”)也不行,发现可是age也不对啊,肯定是值没有传进去。
在参数前面加了一个@RequestBody注解后,值就传进来了
八、测试getPerson方法