当前位置:网站首页>手写一个博客平台~第三天
手写一个博客平台~第三天
2022-08-02 01:37:00 【嗝屁小孩纸】
留给读者
前两天已经解决了对环境的搭建和项目的架构的基础设计,还有持久层的方法也给了大家,今天就给大家说说博客平台应该需要哪些数据,数据之间的关联又是怎么样的,以及完成第一个功能模块。
当然昨天也应允给大家看看博客的效果,其实仔细的你们已经早就看到了博客了,博客就放在了github主页上,可以到最底部点击技术专栏跳转,看我的个人博客。
这是一篇文章的示例:
如果github进不去,可以简单下载个steam++,当然这不是那种爬墙软件,主要还是用来学习的,你懂得,很多国外网站依旧无法访问,但github就可以轻松访问,当然也有其他很多功能,有兴趣可以了解一下。
给出链接:https://steampp.net/
煲鸡汤结束,废话不多说,干代码!
简单来说,博客平台就是一个可以发表文章和自由评论的一个项目,要做到这一点,就要有以下的数据。
- 文章存储
- 文章分类存储
- 标签存储
- 评论存储
- 用户存储
文章和评论存储涉及到非关系型数据,当然你也依旧可以将它当做关系型来处理,不过只是仅仅当做持久层对象来做逆向工程,后面会详讲。
不管怎么样,先将持久层(mapper和pojo)搞完先!
- 用户和用户详情
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`permission` int NOT NULL DEFAULT 2,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for user_info
-- ----------------------------
DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`sex` int NULL DEFAULT NULL,
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`nickname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`tel` varchar(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`email` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `user_id`(`user_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
- 标签和分类
-- ----------------------------
-- Table structure for tag
-- ----------------------------
DROP TABLE IF EXISTS `tag`;
CREATE TABLE `tag` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for classfication
-- ----------------------------
DROP TABLE IF EXISTS `classfication`;
CREATE TABLE `classfication` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
- 文章与标签
-- ----------------------------
-- Table structure for article
-- ----------------------------
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`create_time` datetime NOT NULL,
`update_time` datetime NULL DEFAULT NULL,
`summary` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`content` varchar(4000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`class_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`comment_counts` int NULL DEFAULT NULL,
`read_counts` int NULL DEFAULT NULL,
`receive_like_counts` int NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for articles2tags
-- ----------------------------
DROP TABLE IF EXISTS `articles2tags`;
CREATE TABLE `articles2tags` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`tag_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
- 用户与文章
这里是拓展了一个收藏文章,没有去实现,有兴趣可以去试试
-- ----------------------------
-- Table structure for user_like_articles
-- ----------------------------
DROP TABLE IF EXISTS `user_like_articles`;
CREATE TABLE `user_like_articles` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
- 用户与评论
-- ----------------------------
-- Table structure for commnet
-- ----------------------------
DROP TABLE IF EXISTS `commnet`;
CREATE TABLE `commnet` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`father_comment_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`to_user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`from_user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`comment` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`create_time` datetime NOT NULL,
`status` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
有读者就有疑问了,为什么说了文章跟评论是非关系型,那为什么还去建这两个表到关系型的MySQL中呢?
问得好,因为我们使用的懒惰式开发,也就是逆向工程是基于关系型的,要先去建表才能逆向生成对象和mapper,这样就不用自己手动写啦!
打开你的generatorConfig.xml
就这样简单写入你的几个表名,注意驼峰命名法,user_info在Java上生成的对象名为userInfo
<table tableName="user"></table>
<table tableName="article"></table>
<table tableName="articles2tags"></table>
<table tableName="classfication"></table>
<table tableName="commment"></table>
<table tableName="tag"></table>
<table tableName="user_info"></table>
完成后大概是这样的情况:

- 完成一个登录注册的功能模块
完成之前需要对用户登录信息保存到Redis中作为缓存,下次登录直接访问缓存而不经过MySQL数据库,减轻对MySQL的负担,大家不妨先去下载Redis,再去简单使用,下周末继续搞!
下载链接:https://redis.io/download/#redis-downloads
我喜欢用的Linux版本的,大家不妨使用虚拟机试试!
边栏推荐
- typescript33-typescript高级概述
- 制造企业数字化转型现状分析
- 5年自动化测试经验的一些感悟:做UI自动化一定要跨过这10个坑
- DCM 中间件家族迎来新成员
- 字节给我狠狠上了一课:危机来的时候你连准备时间都没有...
- go版本升级
- 60种特征工程操作:使用自定义聚合函数【收藏】
- Anti-oversold and high concurrent deduction scheme for e-commerce inventory system
- Day.js 常用方法
- Pytorch seq2seq model architecture to achieve English translation tasks
猜你喜欢

百度、百图生科 | HelixFold-Single: 使用蛋白质语言模型作为替代进行无MSA蛋白质结构预测

理解分布式系统中的缓存架构(下)

第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母

NFT到底有哪些实际用途?

HSDC is related to Independent Spanning Tree

Pcie the inbound and outbound

datagrip连接mysql数据库

go泛型使用方法

After graduating from three books, I was rejected by Tencent 14 times, and finally successfully joined Alibaba

typescript29-枚举类型的特点和原理
随机推荐
6-24漏洞利用-vnc密码破解
When paying attention to the "Internet +" model, you usually only focus on the "Internet +" model itself
DCM 中间件家族迎来新成员
传统企业数字化转型需要经过几个阶段?
【ORB_SLAM2】void Frame::AssignFeaturesToGrid()
Kubernetes — Calico
tf.keras.callbacks.EarlyStopping()
Shell入门终章
安全(1)
go泛型使用方法
Some insights from 5 years of automated testing experience: UI automation must overcome these 10 pits
6-24 exploit-vnc password cracking
Navicat data shows incomplete resolution
C语言实验十 函数(二)
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
3. Bean scope and life cycle
kubernetes之服务发现
【ORB_SLAM2】SetPose、UpdatePoseMatrices
【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例
typeof in typescript32-ts