springboot学习笔记03 整合JPA

本文介绍了使用Spring Boot集成JPA进行数据库操作的步骤,包括pom.xml添加依赖、application.yml配置数据源信息、定义实体类、实现Repository接口以及创建RESTful API控制器。通过示例展示了如何添加、删除和获取Person记录,并在遇到问题时如何解决,如POST请求参数传递的调整。最后,文章提到了使用Postman进行API测试的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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方法
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值