当前位置:网站首页>手写一个博客平台~第三天
手写一个博客平台~第三天
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
版本的,大家不妨使用虚拟机试试!
边栏推荐
- 信息收集之目录扫描-dirbuster
- flex布局中使用flex-wrap实现换行
- datax与datax-web安装部署
- 3. Bean scope and life cycle
- Kubernetes之本地存储
- Oracle data to mysql FlinkSQL CDC to achieve synchronization
- 传统企业数字化转型需要经过几个阶段?
- Flask gets post request parameters
- Image fusion based on weighted 】 and pyramid image fusion with matlab code
- 3.Bean的作用域与生命周期
猜你喜欢
Flex布局详解
Constructor instance method of typescript36-class
力扣 1374. 生成每种字符都是奇数个的字符串
typescript33 - high-level overview of typescript
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
第一次写对牛客的编程面试题:输入一个字符串,返回该字符串出现最多的字母
制造企业数字化转型现状分析
Record the pits where an error occurs when an array is converted to a collection, and try to use an array of packaging types for conversion
typescript33-typescript高级概述
html+css+php+mysql实现注册+登录+修改密码(附完整代码)
随机推荐
Why is on-chain governance so important, and how will Polkadot Gov 2.0 lead the development of on-chain governance?
C语言实验八 字符数组程序设计
MySQL——增删查改操作
Shell入门终章
当关注「互联网+」模式的时候,通常仅仅只是在关注「互联网+」模式本身
Reflex WMS中阶系列7:已经完成拣货尚未Load的HD如果要取消拣货,该如何处理?
6-25 Vulnerability Exploitation - irc Backdoor Exploitation
Local storage in Kubernetes
FlinkSQL CDC实现同步oracle数据到mysql
3 Month Tester Readme: 4 Important Skills That Impacted My Career
Day116.尚医通:预约挂号详情 ※
typescript30 - any type
飞桨开源社区季度报告来啦,你想知道的都在这里
Test Cases: Four-Step Test Design Approach
typescript35-class的构造函数
大话西游无法登陆解决
【ORB_SLAM2】void Frame::ComputeImageBounds(const cv::Mat &imLeft)
Kubernetes — 网络流量模型
电商库存系统的防超卖和高并发扣减方案
Redis和MySQL数据一致性问题,有没有好的解决方案?