SpringBoot个人博客开发(十一)----实体类构建

本文介绍了如何在SpringBoot项目中构建博客系统的实体类,包括Blog、Type、Tag、Comment和User类。详细阐述了实体类的属性设定、注解使用,如@Id、@Temporal注解来指定主键和时间戳。还讨论了实体类间的关系映射,如Blog与Type的一对多关系,Blog与Tag的多对多关系,以及Comment与Blog的一对多和自关联关系。最后给出了各实体类的关键代码片段。
摘要由CSDN通过智能技术生成

在项目目录下新建一个包PersisentObject在这里插入图片描述
po层,装载的是实体类。在其中创建
Blog类
在Blog类中创建主键等

private Long id;
    private String title;

    @Basic(fetch = FetchType.EAGER)
    @Lob
    private String content;

    private String firstPicture;
    private String flag;
    private Integer views;
    private boolean appreciation;
    private boolean shareStatement;
    private boolean commentabled;
    private boolean published;
    private boolean recommend;
    private Date createTime;
    private Date updateTime;

    @Transient
    public String tagIds;
    private String description;

首先构造一个空的构造函数

public Blog(){
   
    }

接着按alt+insert选下面的getterandsetter生成getset.
和tostring方法
加入注解,指定数据库相关的文件
在这里插入图片描述
再标识ID,表示是主键
在这里插入图片描述

@GeneratedValue

生成策略是自动生成

再创建分类,标签,评论等内容的实体类
在这里插入图片描述
getterandsetter等东西和一开始做法一样。
每个实体类对应的数据库名都是t_(实体类名称)
Comment类中有上传时间和更新时间等,要加上
@Temporal(TemporalType.TIMESTAMP)时间戳
在这里插入图片描述
有时间的东西都要加上@Temporal(TemporalType.TIMESTAMP)注解

接下来就是处理实体类之间的关系。
Blog和Type是多对一的关系,所以在Blog实体类中加入
在这里插入图片描述

@ManyToOne
    private Type type;

相应的在Type类中就要加入对应的
在这里插入图片描述

@OneToMany(mappedBy = "type")
    private List<Blog> blogs = new ArrayList<>();

加入这些后再次生成getset方法
Blog和Tag之间是多对多的关系
所以在两边都加入ManyToMany
在这里插入图片描述
在这里插入图片描述
在后面维护与被维护关系时,依旧是Blog维护Tag
在Tag中依旧是加入mtm后面括号中的东西。
Blog中后面那个是级联新增
Blog和User是多对一的关系

所以在这里插入图片描述

对应的User中也要加入
在这里插入图片描述

接下来是comment和Blog的关系

是一对多
在这里插入图片描述
相对应的就是在Comment类中新增
在这里插入图片描述
最后要在comment中设置自关联

一个父对象对应多个子对象等等
加入
在这里插入图片描述
就是评论与二级评论这种玩意
这些东西弄完别忘记去setget哦

最后附上代码
Blog.java

package net.yq.springbootblog.PersisentObject;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


@Entity(name = "t_blog")
public class Blog {
   

    @Id
    @GeneratedValue
    private Long id;
    private String title;

    @Basic(fetch = FetchType.EAGER)//这个位置加上的这个是防止在文章新增的时候因为数据过大报异常,因为自动生成的数据库在文章内容这个字段只有255大小。
    @Lob
    private String content;

    private String firstPicture;
    private String flag;
    private Integer views;
    private boolean appreciation;
    private boolean shareStatement;
    private boolean commentabled;
    private boolean published;
    private boolean recommend;
    @Temporal(TemporalType.TIMESTAMP)
    private Date createTime;
    @Temporal(TemporalType.TIMESTAMP)
    private Date updateTime;

    @Transient
    private String description;

    public String getDescription() {
   //此处是文章简介,后面会讲。
        return description;
    }

    public void setDescription(String description) {
   
        this.description = description;
    }

    @ManyToOne
    private Type type;

    @ManyToMany(cascade = {
   CascadeType.PERSIST})
    private List<Tag> tags = new ArrayList<>();

    @ManyToOne
    private User user;

    @OneToMany(mappedBy = "blog")
    private List<Comment> comments = new ArrayList<>();

    public Blog(){
   
    }

    public Long getId() {
   
        return id;
    }

    public void setId(Long id) {
   
        this.id = id;
    }

    public String getTitle() {
   
        return title;
    }

    public void setTitle(String title) {
   
        this.title = title;
    }

    public String getContent() {
   
        return content;
    }

    public void setContent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值