<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”>
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.1.RELEASE
com.mcy.springdatajpa
spring-data-jpa-entity
0.0.1-SNAPSHOT
spring-data-jpa-entity
Demo project for Spring Boot
<java.version>1.8</java.version>
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
[](()2、配置基本属性
在src/main/resources下找到application.properties文件,在该配置文件中配置数据源和jpa相关的属性,需要在数据库中先新建一个jpa数据库。
#数据源信息配置
#数据库地址,jpa数据库名,需要在数据库中先建一个jpa数据库
spring.datasource.url=jdbc:mysql://localhost:3306/jpa?serverTimezone=GMT%2B8
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=root
#链接数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#指定数据库方言
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
#配置在日志中显示SQL语句
spring.jpa.show-sql=true
#指定自动创建|更新|验证数据库表结构等配置,配置成updata
#表示如果数据库中存在持久化类对应的表就不创建,不存在就创建对应的表
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.use-new-id-generator-mappings=false
[](()编写代码
[](()1、创建持久化类
在项目中新建4个包,分别为entity(放置持久化类)、controller(控制器)、repository(定义数据访问接口的包)、service(业务逻辑处理类)。
在entity包中创建一个持久化类SysUser.java作为公共的实体类。代码如下。
import javax.persistence.*;
/**
- 公共实体类
*/
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class SysUser {
@Id
@GeneratedValue
protected Integer id;
protected String username;
protected String password;
protected String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在entity包中创建一个持久化类Teacher.java教师表和Student.java学生类,之后继承公共的SysUser.java实体类。代码如下。
import javax.persistence.Entity;
/**
- 老师类,继承公共实体类SysUser
*/
@Entity
public class Teacher extends SysUser{
private String job;
public String getJob() {
return job;
} 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】
public void setJob(String job) {
this.job = job;
}
}
Student.java类
import javax.persistence.Entity;
/**
- 学生类,继承公共实体类SysUser
*/
@Entity
public class Student extends SysUser {
private String banji;
public String getBanji() {
return banji;
}
public void setBanji(String banji) {
this.banji = banji;
}
}
数据库里会自动给我们建立三个表,sys_user,student,teacher。其中sys_user 表里会有四个字段,id,username,password,name; student表里会有两个字段,id,banji。teacher表里会有两个字段id,job。
[](()2、定义数据访问层接口
在repository包下新建三个接口,代码如下。
UserRepository.java公共实体类接口
import com.mcy.springdatajpa.springdatajpaentity.entity.SysUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<SysUser, Integer> {
}
StudentRepository.java学生类接口
import com.mcy.springdatajpa.springdatajpaentity.entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface StudentRepository extends JpaRepository<Student, Integer> {
}
TeacherRepository.java老师类接口
import com.mcy.springdatajpa.springdatajpaentity.entity.Teacher;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface TeacherRepository extends JpaRepository<Teacher, Integer> {
}
[](()3、定义业务层类
在service包下新建一个三个类,包含查询和添加方法。代码如下。
UserService.java类
import org.springframework.stereotype.Service;
@Service
public class UserService {
}