一、前言
JPA的英文全称是Java Persistence API,即Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA也是基于ORM(Object Relational Mapping)对象关系映射的开发思想。
在Java 开发中,涉及到数据库访问的,主要就两种框架,一个是 MyBatis ,另一个就是 JPA,而国内基本上使用较多的是通过MyBatis框架。
接下来通过一个实例简单说明SpringData JPA在SpringBoot中的使用。
二、正文
本项目使用的环境:
开发工具:Intellij IDEA 2018.1.3
springboot: 2.2.5
jdk:1.8
maven:3.6.2
新建一个项目工程,pom文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xinyi</groupId>
<artifactId>springbootjpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootjpa</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接着新建一个实体类和数据表进行映射,并通过注解配置好对应的映射关系:
package com.xinyi.entity;
import javax.persistence.*;
//使用JPA注解配置映射关系
//告诉JPA这是一个实体类(和数据表映射的类)
@Entity
//@Table来指定和哪个数据表对应;如果省略默认表名就是实体类的类名小写;
@Table(name = "Person")
public class Person {
//这是一个主键
@Id
//声明自增已经自增策略
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
//Column注解表示这是和数据表对应的一个列,里面的值就是和数据表的具体对应,如果()里面省略你不写,则默认列名就是实体类的属性名
@Column(name = "name" ,length = 50)
private String name
@Column
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
声明一个Repository接口,并继承JPARepository来完成对数据库的CRUD操作:
package com.xinyi.repository;
import com.xinyi.entity.Person;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PersonRepository extends JpaRepository<Person,Integer> {
}
新建一个yml配置,配置数据源和jpa的相关配置:
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/jdbc?serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
#在控制台显示执行的sql语句
show-sql: true
hibernate:
#更新或者创建数据表的结构
ddl-auto: update
接着启动项目,因为之前并没有在数据库中新建对应的数据表,启动项目之后由于配置了ddl-auto: update,会在数据库新建对应数据表。
接着新建一个controller,实现对于数据表的插入和查询操作:
package com.xinyi.comtroller;
import com.xinyi.entity.Person;
import com.xinyi.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PersonController {
@Autowired
PersonRepository personRepository;
//插入数据
@GetMapping("/person")
public Person insertPerson(Person person){
Person person1 = personRepository.save(person);
return person1;
}
//查询数据
@GetMapping("/person1")
public Person getUser(){
Person person = personRepository.findAll().get(0);
return person;
}
}
启动项目:
以上就是SpringBoot如何整合JPA进行数据访问。
扫描关注微信公众号,获取海量学习资源,涵盖:java、python、前端、大数据、人工智能等。