springboot使用JPA

tech2025-10-23  4

springboot使用JPA

1、在pom.xml文件中,添加对JPA、JDBC、mysql等依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>

2、编写application.yml (application.xml)配置文件

spring: datasource: username: root password: 123456 url: jdbc:mysql://10.1.4.200/jpa driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update #更新或者创建数据表结构 show-sql: true #显示SQL语句

3、创建实体类

@Entity @Table(name = "tb_user") @JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(name = "last_name",length = 50) private String lastName; @Column private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }

注解说明:

​ 使用@Entity注解,标注这个类是一个实体类,对应数据库中的一张表

​ 使用@Table注解,给表命名,可以省略,默认为类名小写

​ 使用@Id注解,表明该属性为主键,配合@GeneratedValue注解,可以配置主键生成策略

​ 使用@Column注解,可以配置列相关属性(列名,长度等),可以省略,默认为属性名小写

4、创建接口,继承JpaRepository接口,只需要声明即可

public interface UserRepository extends JpaRepository<User,Integer> { }

​ 在泛型参数中,第一个泛型参数为对应的实体类,第二个参数为主键属性的类型

5、编写controller测试

@RestController public class UserController { @Autowired UserRepository userRepository; @GetMapping("/user/{id}") public User getUserById(@PathVariable("id") Integer id){ User user = userRepository.getOne(id); return user; } @GetMapping("/save") public User saveUser(User user){ User save = userRepository.save(user); return save; }

6、遇到的问题

测试代码:

@GetMapping("/user/{id}") public User getUserById(@PathVariable("id") Integer id){ User user = userRepository.getOne(id); return user;

控制台信息:

Springboot JPANo serializer found for class org.hibernate.proxy.pojo.bytebuddy

​ SQL语句已经正常打印输出,控制台后续报错:类型定义错误,没有为类找到序列化程序。

解决方法

@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
最新回复(0)