- 以mybatis为持久层源码地址:https://github.com/oneStarLR/myblog-mybaits
欢迎给star以鼓励(^_−)☆
本篇文章将从数据库的表结构来编写实体类,主要分析一下涉及到多表查询相关的实体类要如何设置变量(用户实体类在上篇文章中已经编写完)
在之前的文章中,都是先给出代码,然后做出分析,感觉这样不太好。咱们养成个习惯,先分析这代码要如何去写,再动手去写,不要一来就复制到你的IDEA,这样就少了思考的过程,还是要先分析一下,要有自己的理解,这样才有进步,授之以鱼不如授之以渔,思想才是最重要的!咱们要做一个有思想的,要根据需求提出问题,然后解决问题。
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博客实体类,代码如下(省略get、set和toString方法):
package com.star.entity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
-
@Description: 博客实体类
-
@Date: Created in 10:10 2020/6/1
-
@Author: ONESTAR
-
@QQ群: 530311074
-
@URL: https://onestar.newstar.net.cn/
*/
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 String description;
private Type type;
private User user;
private Long typeId;
private Long userId;
private List comments = new ArrayList<>();
}
2.分类实体类
分析:
问:分类实体类需要设置哪些变量呢?
答:一个id和一个分类名称不就可以了吗。
问:可以吗?还记不记得在之前设计表结构的时候,博客和分类是多对一的关系,一篇博客对应一个分类,一个分类可以对应多篇博客,这里就要涉及到Mybatis的多对一和一对多的关系了,因此在实体类中也要体现出来,要如何体现呢?
答:除了id和分类名称外,还需要定义“博客”变量
在entity目录下创建Type分类实体类,代码如下(省略get、set和toString方法):
package com.star.entity;
import java.util.ArrayList;
import java.util.List;
/**
-
@Description: 分类实体类
-
@Date: Created in 17:26 2020/5/31
-
@Author: ONESTAR
-
@QQ群: 530311074
-
@URL: https://onestar.newstar.net.cn/
*/
public class Type {
private Long id;
private String name;
private List blogs = new ArrayList<>();
}
3.评论实体类
分析:
问:评论实体类需要设置哪些变量呢?
答:数据库中设计的属性:主键(id)、昵称(nickname)、邮箱(email)、头像(avatar)、评论内容(content)、创建时间(createTime)、博客id(blogId)、父评论id(parentCommentId)、是否为管理员评论(adminComment)
问:够了吗?同样,在之前表结构设计的时候,博客和评论是一对多的关系,评论和回复是一对多的关系,在实体类中当然也要体现出来,要如何体现呢?
答:除了上述变量外,还需要回复评论集合(replyComments)用来存储回复信息、父评论昵称(parentNickname)用来设置父级评论的id以及父评论(parentComment)用来显示父级评论姓名
在entity目录下创建Comment评论实体类,代码如下(省略get、set和toString方法):
package com.star.entity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
-
@Description: 评论实体类
-
@Date: Created in 11:12 2020/6/1
-
@Author: ONESTAR
-
@QQ群: 530311074
-
@URL: https://onestar.newstar.net.cn/
*/
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 boolean adminComment;
//回复评论
private List replyComments = new ArrayList<>();
private Comment parentComment;
private String parentNickname;
}
4.留言实体类
留言和评论是一样的,只是少了博客id(blogId)变量,这里就不做分析,直接给出代码(省略get、set和toString方法):
package com.star.entity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
-
@Description: 留言实体类
-
@Date: Created in 11:44 2020/6/1
-
@Author: ONESTAR
-
@QQ群: 530311074
-
@URL: https://onestar.newstar.net.cn/
*/
public class Message {
private Long id;
private String nickname;
private String email;
private String content;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
oom: 33%;" />
最后
Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-VKr32ECY-1713406008166)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!