文章标题spring-boot + spring-data-jpa 实现简单的增删改查

来源:互联网 发布:java递归对象中的属性 编辑:程序博客网 时间:2024/05/17 07:39

JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。

  1. 示例环境
    • jdk 1.8
    • spring-boot 2.0.0
    • spring-data-jpa
    • idea2015
    • OS: Windows10
    • mysql (springboot)
    • *
  2. 需求

    请求类型 请求路径 功能 GET /girls 获取女生列表 POST /girls 创建一个女生 GET /girls/id 通过id查询一个女生 PUT /girls/id 通过id更新一个女生 DELETE /girls/id 通过id删除一个女生
  3. 添加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>
  4. 项目名称: girl

  5. 项目目录结构:

  6. 配置文件 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
  7. 数据库 springboot

  8. 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;    }}
  9. tb_girl 表对应的dao接口 (关于主键的增删改查可不写)

    public interface GirlRepository extends JpaRepository<Girl,Integer> {    /**     * 通过年龄查询     * @param age     * @return     */    List<Girl> findByAge(Integer age);}
  10. controller

    @RestControllerpublic 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);    }}
  11. 启动项目

  12. 测试

0 0
原创粉丝点击