简单的来说,Jpa就是一个和mybatis-plus功能类似的一个持久层框架,也是将所有基本的CRUD操作封装好了,下面来介绍一下自动生成数据库表的操作。
JPA常用注解
1、常用基本注解
@Entity
@Table
@Basic
@Column
@GeneratedValue
@Id
@OneToMany
@ManyToOne
@ManyToMany
具体用法可以自行百度。
1.引入依赖。这是我做一个项目的所有依赖,基本就是所有springboot都需要的依赖,如果那个maven-plugin爆红只需要改成和自己springboot同样的version就可以了
<?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.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.gao</groupId>
<artifactId>boke2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boke2</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-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</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>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.3</version>
</plugin>
</plugins>
</build>
</project>
2.下一步编写配置文件,因为我是用的mysql最新版本所以数据源和时区必须要有,就是一些简单的配置,加上日志
server:
port: 8080
spring:
thymeleaf:
mode: HTML
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blog?useSSL=false&useUnicode=true&characterEncoding=UTF-8&severTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: 123456
aop:
proxy-target-class: true
auto: true
jpa:
hibernate:
ddl-auto: update
show-sql: true
logging:
level:
root: info
com.lrm: debug
3.编写实体类(本文拿博客的几个实体类为例),这里可以使用Lombok添加注解,来添加get,set方法,tostring,无参构造和有参构造, 第一个表为博客表,第二个为博客类型表,第三个为用户表,标签表和type表基本一样,这个就相当于mybatis里的外键,根据表之间的映射关系添加注解,然后生成数据库,这里的@Id注解不要导错包,是import javax.persistence.*;这个包下的
@Entity
@Table( name= "t_blog")
public class Blog {
@Id
@GeneratedValue
private Long id;
private String title;
@Basic(fetch = FetchType.LAZY)
@Lob
private String content;
private String firstPicture;
private String flag;
private Integer views;
private boolean appreciation;
private boolean commentabled;
private boolean published;
private boolean recommend;
private boolean shareStatement;
private Date createTime;
private Date updateTime;
@ManyToOne
private Type type;
@ManyToMany(cascade = {CascadeType.PERSIST})
private List<Tag> tags = new ArrayList<>();
@ManyToOne
private User user;
}
@Entity
@Table(name="t_type")
public class Type {
@Id
@GeneratedValue
private Long id;
@NotBlank(message="分类名称不能为空")
private String name ;
@OneToMany(mappedBy = "type")
private List<Blog> blogs=new ArrayList<>();
}
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue
private Long id;
private String nickname;
private String username;
private String password;
private String email;
private String avatar;
private Integer type;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;
@OneToMany(mappedBy = "user")
private List<Blog> blogs=new ArrayList <>();
}
4.创建数据库,生成数据表
创建一个数据库,数据库的名字为前边在配置文件中配置的,然后在启动类启动,即可生成对应的数据表。
就是简单的写了一下,如果出现问题可以评论一起探讨。