Spring-Data-Jpa实现继承实体类

<?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”>

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 {

}


版权声明:本文为m0_69526086原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。