当前位置:网站首页>手写一个博客平台~第三天
手写一个博客平台~第三天
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版本的,大家不妨使用虚拟机试试!
边栏推荐
- 6-25 Vulnerability Exploitation - irc Backdoor Exploitation
- Day11 Shell scripting basics
- 60种特征工程操作:使用自定义聚合函数【收藏】
- Interview: Briefly describe a project you are involved in
- 牛顿定理和相关推论
- typeof in typescript32-ts
- Newton's theorem and related corollaries
- 【轮式里程计】
- Byte taught me a hard lesson: When a crisis comes, you don't even have time to prepare...
- 接口(第九天)
猜你喜欢

S/4中究竟有多少个模块,你对这些模块了解多少

Constructor of typescript35-class

go版本升级

typescript35-class的构造函数

YGG Guild Development Plan Season 1 Summary

Day115. Shangyitong: Background user management: user lock and unlock, details, authentication list approval

制造企业数字化转型现状分析

Can't connect to MySQL server on 'localhost3306' (10061) Simple and clear solution

27英寸横置大屏+实体按键,全新探险者才是安全而合理的做法!

HSDC和独立生成树相关
随机推荐
C语言实验七 二维数组程序设计
typescript30-any类型
typescript34-class的基本使用
有效进行自动化测试,这几个软件测试工具一定要收藏好!!!
牛顿定理和相关推论
【ORB_SLAM2】void Frame::ComputeImageBounds(const cv::Mat &imLeft)
Flink_CDC construction and simple use
GO开发环境配置
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
Can't connect to MySQL server on 'localhost3306' (10061) Simple and clear solution
Understand the big model in seconds | 3 steps to get AI to write a summary
Constructor instance method inheritance of typescript38-class (implement)
6-24 exploit-vnc password cracking
Flex布局详解
IDEA如何运行web程序
typescript29-枚举类型的特点和原理
Navicat data shows incomplete resolution
Huawei's 5-year female test engineer resigns: what a painful realization...
第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母
Typescript31 - any type