简单的来说,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.创建数据库,生成数据表

创建一个数据库,数据库的名字为前边在配置文件中配置的,然后在启动类启动,即可生成对应的数据表。

就是简单的写了一下,如果出现问题可以评论一起探讨。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐