模仿segmentfault 评论
Posted HF_Student_NotePad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模仿segmentfault 评论相关的知识,希望对你有一定的参考价值。
实现核心功能,包括数据库设计,java代码编写。
使用 @用户 评论方法,避免了多重循环嵌套方式。
微博、思否就是用这种评论方式。
效果图:
微博(评论时间倒叙,从下向上看):
思否
数据库设计:
涉及到三张表:
评论表 ↓
CREATE TABLE `pm_comment` ( `id` varchar(30) NOT NULL, `pid` varchar(30) DEFAULT NULL, `pictureid` varchar(30) DEFAULT NULL, `userid` varchar(32) DEFAULT NULL COMMENT \'评论用户id\', `beicommentuserid` varchar(32) DEFAULT NULL COMMENT \'被评论用户id,如果添加根节点评论,则为空\', `commenttime` datetime DEFAULT NULL, `isrelease` int(11) DEFAULT \'1\', `isdel` int(11) DEFAULT \'0\', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
评论内容表 ↓
CREATE TABLE `pm_commentcontent` ( `id` varchar(32) NOT NULL DEFAULT \'\', `commentid` varchar(30) NOT NULL, `commentcontent` varchar(500) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用户表 ↓
CREATE TABLE `pm_user` ( `id` varchar(30) NOT NULL, `account` varchar(20) NOT NULL, `password` varchar(40) NOT NULL, `nickname` varchar(20) DEFAULT NULL, `avatar` varchar(200) DEFAULT NULL, `gender` varchar(10) NOT NULL, `phonenumber` varchar(11) NOT NULL, `email` varchar(50) NOT NULL, `createtime` datetime NOT NULL, `updatetime` datetime DEFAULT NULL, `isdel` int(11) NOT NULL DEFAULT \'0\', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
关联查询出评论记录:
SELECT pc.id, pc.pid, pc.pictureid, pc.userid, pu.account AS username, pc.beicommentuserid, pus.account AS beicommentusername, pc.commenttime, pc.isrelease, pc.isdel, pcc.commentcontent AS commentcontent FROM pm_comment AS pc INNER JOIN pm_commentcontent AS pcc ON pc.id = pcc.commentid INNER JOIN pm_user AS pu ON pc.userid = pu.id LEFT JOIN pm_user AS pus ON pc.beicommentuserid = pus.id WHERE pc.pictureid = \'176476335496474624\' -- AND pc.pid = \'0\' ORDER BY pc.commenttime DESC
查询结果 ↓
以上是关于模仿segmentfault 评论的主要内容,如果未能解决你的问题,请参考以下文章