JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。
- 示例环境
- jdk 1.8
- spring-boot 2.0.0
- spring-data-jpa
- idea2015
- OS: Windows10
- mysql (springboot)
- *
需求
请求类型 请求路径 功能 GET /girls 获取女生列表 POST /girls 创建一个女生 GET /girls/id 通过id查询一个女生 PUT /girls/id 通过id更新一个女生 DELETE /girls/id 通过id删除一个女生 添加jar包 (在spring-boot helloworld的pom.xml文件中添加以下包)
<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> <version>5.1.40</version> </dependency>
项目名称: girl
项目目录结构:
配置文件 applicatin.yml
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost/springboot username: root password: **** jpa: hibernate: # create:表示启动的时候先drop,再create # create-drop: 也表示创建,只不过再系统关闭前执行一下drop # update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新 # validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新 ddl-auto: update # 显示sql语句 show-sql: true
数据库 springboot
tb_girl 表对应的实体类
@Entity @Table( name = "tb_girl") public class Girl { @Id @GeneratedValue private Integer id; private String cupSize; private Integer age; public Girl() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getCupSize() { return cupSize; } public void setCupSize(String cupSize) { this.cupSize = cupSize; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
tb_girl 表对应的dao接口 (关于主键的增删改查可不写)
public interface GirlRepository extends JpaRepository<Girl,Integer> { /** * 通过年龄查询 * @param age * @return */ List<Girl> findByAge(Integer age); }
controller
@RestController public class GirlContrller { @Autowired private GirlRepository girlRepository; @Autowired private GirlService girlService; /** * 查询所有女生 * @return */ @GetMapping(value = "/girls") @ResponseBody public List<Girl> girlList(){ return girlRepository.findAll(); } /** * 添加一个女生 * @param cupSize * @param age * @return */ @PostMapping(value="/girls") public Girl girlAdd(@RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age){ Girl girl = new Girl(); girl.setCupSize(cupSize); girl.setAge(age); return girlRepository.save(girl); } /** * 查询一个女生 * @param id * @return */ @GetMapping(value="/girls/{id}") public Girl girlFindOne(@PathVariable("id") Integer id){ return girlRepository.findOne(id); } /** * 更新一个女生 * @param id * @param cupSize * @param age * @return */ @PutMapping(value="/girls/{id}") public Girl girlUpdate(@PathVariable("id") Integer id, @RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age){ Girl girl = girlRepository.findOne(id); girl.setCupSize(cupSize); girl.setAge(age); return girlRepository.save(girl); } /** * 删除一个女生 * @param id */ @DeleteMapping(value="/girls/{id}") public void girlDelete(@PathVariable("id") Integer id){ girlRepository.delete(id); } /** * 通过年龄查找 * @param age * @return */ @GetMapping(value="/girls/age/{age}") public List<Girl> girlListByAge(@PathVariable("age") Integer age){ return girlRepository.findByAge(age); } }
启动项目
测试