建站笔记(五)-实体类构建

建站笔记(五)

实体类构建

参考笔记原文链接

本篇文章将从数据库的表结构来编写实体类,主要分析一下涉及到多表查询相关的实体类要如何设置变量

1.博客实体类

分析:

问:博客实体类需要设置哪些变量呢?

答:数据库中设计的属性:主键(id)、博客标题(title)、博客内容(content)、首图地址(firstPicture)、标记是否原创(flag)、浏览次数(views)、评论次数(commentCount)、是否开启赞赏(appreciation)、是否开启版权(shareStatement)、是否开启评论(commentabled)、是否发布(published)、是否推荐(recommend)、创建时间(createTime)、更新时间(updateTime)、博客描述(description)

问:这些属性就够了吗?还记不记得在之前设计表结构的时候,博客和分类是多对一的关系,博客和用户是多对一的关系,博客和评论是一对多的关系,在这些对应关系中,博客表和分类表、用户表、评论表都有关联,这里就要涉及到Mybatis的多对一和一对多的关系了,因此在实体类中也要体现出来,要如何体现呢?

答:除了上述变量外,还需要分类(type)、用户(user)、评论集合(comments)以及分类id(typeId)、用户id(userId),用来实现Mybatis的多表查询和相关功能。

在entity目录下创建Blog博客实体类,代码如下:

package com.cbx.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author cbx
 * @date 2022/3/3
 * @apiNote 博客实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Blog {

    private Long id;
    private String title;
    private String content;
    private String firstPicture;
    private String flag;
    private Integer views;

    private Integer commentCount;

    private boolean appreciation;
    private boolean shareStatement;
    private boolean commentabled;
    private boolean published;
    private boolean recommend;
    private Date createTime;
    private Date updateTime;

    private Long typeId;
    private Long userId;
    private String description;
    private Type type;
    private User user;
    private List<Comment> comments = new ArrayList<>();

}

2.分类实体类

分析:

问:分类实体类需要设置哪些变量呢?

答:一个id和一个分类名称不就可以了吗。

问:可以吗?还记不记得在之前设计表结构的时候,博客和分类是多对一的关系,一篇博客对应一个分类,一个分类可以对应多篇博客,这里就要涉及到Mybatis的多对一和一对多的关系了,因此在实体类中也要体现出来,要如何体现呢?

答:除了id和分类名称外,还需要定义“博客”变量

在entity目录下创建Type分类实体类,代码如下(省略get、set和toString方法):

package com.cbx.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

/**
 * @author cbx
 * @date 2022/3/3
 * @apiNote 分类实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Type {

    private Long id;
    private String name;

    private List<Blog> blogs = new ArrayList<>();

}

3.评论实体类

分析:

问:评论实体类需要设置哪些变量呢?

答:数据库中设计的属性:主键(id)、昵称(nickname)、邮箱(email)、头像(avatar)、评论内容(content)、创建时间(createTime)、博客id(blogId)、父评论id(parentCommentId)、是否为管理员评论(adminComment)

问:够了吗?同样,在之前表结构设计的时候,博客和评论是一对多的关系,评论和回复是一对多的关系,在实体类中当然也要体现出来,要如何体现呢?

答:除了上述变量外,还需要回复评论集合(replyComments)用来存储回复信息、父评论昵称(parentNickname)、(parentCommentId)用来设置父级评论的id以及父评论(parentComment)、(parentNickname)用来显示父级评论姓名

在entity目录下创建Comment评论实体类,代码如下:

package com.cbx.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author cbx
 * @date 2022/3/3
 * @apiNote 评论实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Comment {

    private Long id;
    private String nickname;
    private String email;
    private String content;

    //头像
    private String avatar;
    private Date createTime;

    private Long blogId;
    private Long parentCommentId;
    private String parentNickname;

    //回复评论
    private List<Comment> replyComments = new ArrayList<>();
    private Comment parentComment;
    private boolean adminComment;


}

4.留言实体类

留言和评论是一样的,只是少了博客id(blogId)变量,这里就不做分析,直接给出代码:

package com.cbx.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author cbx
 * @date 2022/3/3
 * @apiNote 留言实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Message {

    private Long id;
    private String nickname;
    private String email;
    private String content;
    private String avatar;
    private Date createTime;
    private Long parentMessageId;
    private boolean adminMessage;

    //回复评论
    private List<Message> replyMessages = new ArrayList<>();
    private Message parentMessage;
    private String parentNickname;

}

5.友链实体类

友链没有和其他表进行关联,只有单表查询,变量就是属性,就不做分析,直接给代码:

package com.cbx.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @author cbx
 * @date 2022/3/3
 * @apiNote 友链实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FriendLink {

    private Long id;
    private String blogname;
    private String blogaddress;
    private String pictureaddress;
    private Date createTime;


}

6.相册实体类

相册没有和其他表进行关联,只有单表查询,变量就是属性,就不做分析,直接给代码(省略get、set和toString方法):

package com.cbx.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author cbx
 * @date 2022/3/3
 * @apiNote 相册实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Picture {

    private Long id;
    private String picturename;
    private String picturetime;
    private String pictureaddress;
    private String picturedescription;

}

实体类构建完成。

end
  • 作者:AWhiteElephant(联系作者)
  • 发表时间:2022-03-14 22:38
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 评论