基于Angularjs+mybatis实现二级评论系统(仿简书)


Posted in Javascript onFebruary 13, 2017

一直想写个评论系统,看了下多说,网易,简书的评论,想了下自己该实现怎样的评论系统。

评论系统关键是嵌套层数以及数据库表设计。嵌套层数多,表结构复杂,呈现也麻烦,最后决定实现一个二级评论。系统由maven构建,springboot快速搭建spring环境。前台采用angularjs+bootstrap,后台使用springmvc+mybatis,数据库采用MySQL.前台请求后台API操作评论。

目录结构

基于Angularjs+mybatis实现二级评论系统(仿简书)基于Angularjs+mybatis实现二级评论系统(仿简书)

数据库表设计

##说说表或者文章表 
create table saying ( 
 saying_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 sayingContent VARCHAR(500) NOT NULL, 
 author VARCHAR(50) NOT NULL, 
 sayingAvatar VARCHAR(50) NOT NULL, 
 likes VARCHAR(500) NOT NULL, 
 createTime datetime NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
 
##一级评论表 
create table firstLevelComment ( 
 flc_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 sayingId INT NOT NULL, 
 commenter VARCHAR(50) NOT NULL, 
 commenterAvatar VARCHAR(50) NOT NULL, 
 commentContent VARCHAR(500) NOT NULL, 
 commentTime datetime NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
 
##二级评论表 
create table secondLevelComment ( 
 slc_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 sayingId INT NOT NULL, 
 flcId INT NOT NULL, 
 replier VARCHAR(50) NOT NULL, 
 toCommenter VARCHAR(50) NOT NULL, 
 replyContent VARCHAR(50) NOT NULL, 
 replyTime datetime NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

获取评论的mapper(关键)

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 
<mapper namespace="personal.timeless.cms.mapper.SayingMapper" > 
 
 <resultMap id="SayingMap" type="saying" > 
 <id column="saying_id" property="id" jdbcType="INTEGER" /> 
 <result column="sayingContent" property="sayingContent" jdbcType="INTEGER" /> 
 <result column="author" property="author" jdbcType="VARCHAR" /> 
 <result column="sayingAvatar" property="avatar" jdbcType="VARCHAR" /> 
 <result column="likes" property="likes" jdbcType="VARCHAR" /> 
 <result column="createTime" property="createTime" jdbcType="TIMESTAMP" /> 
 <collection property="flcs" ofType="firstLevelComment" column="sayingId"> 
 <id column="flc_id" property="id" jdbcType="INTEGER" /> 
 <result column="sayingId" property="sayingId" jdbcType="INTEGER" /> 
 <result column="commenter" property="commenter"/> 
 <result column="commenterAvatar" property="avatar"/> 
 <result column="commentContent" property="commentContent"/> 
 <result column="commentTime" property="commentTime" jdbcType="TIMESTAMP" /> 
 <collection property="slcs" ofType="secondLevelComment" column="flcId"> 
  <id column="slc_id" property="id" jdbcType="INTEGER" /> 
  <result column="flcId" property="flcId" jdbcType="INTEGER" /> 
  <result column="replier" property="replier"/> 
  <result column="toCommenter" property="toCommenter"/> 
  <result column="replyContent" property="replyContent"/> 
  <result column="replyTime" property="replyTime" jdbcType="TIMESTAMP" /> 
 </collection> 
 </collection> 
 </resultMap> 
 
 <select id="selectOneById" resultMap="SayingMap" parameterType="int" > 
 select * from 
 (select * from saying s left join firstLevelComment fc on s.saying_id=fc.sayingId where s.saying_id=#{id}) tmp left join secondLevelComment sc 
 on tmp.flc_id = sc.flcId 
 </select> 
 
 <select id="updateLikesById"> 
 update saying set likes = #{likes} where saying_id = #{id} 
 </select> 
 </mapper>

页面展示

基于Angularjs+mybatis实现二级评论系统(仿简书)

基于Angularjs+mybatis实现二级评论系统(仿简书)

基于Angularjs+mybatis实现二级评论系统(仿简书)

基于Angularjs+mybatis实现二级评论系统(仿简书)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS类库Bindows1.3中的内存释放方式分析
Mar 08 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 Javascript
AngularJS ng-bind 指令简单实现
Jul 30 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
assert()函数用法总结(推荐)
Jan 25 Javascript
jQuery实现 上升、下降、删除、添加一行代码
Mar 06 Javascript
vue组件如何被其他项目引用
Apr 13 Javascript
Node.js 异步异常的处理与domain模块解析
May 10 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 Javascript
JS工厂模式开发实践案例分析
Oct 17 Javascript
vue实现数字滚动效果
Jun 29 Javascript
JavaScript实现公历转农历功能示例
Feb 13 #Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
Feb 13 #Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 #Javascript
JS中input表单隐藏域及其使用方法
Feb 13 #Javascript
浅谈键盘上回车按钮的js触发事件
Feb 13 #Javascript
jQuery源码分析之init的详细介绍
Feb 13 #Javascript
AngulerJS学习之按需动态加载文件
Feb 13 #Javascript
You might like
提高Laravel应用性能方法详解
2019/06/24 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
Open and Print a Word Document
2007/06/15 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
python实现泊松图像融合
2018/07/26 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
Python实现自动装机功能案例分析
2020/10/22 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
古驰英国官网:GUCCI英国
2020/03/07 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
电教室标语
2014/06/20 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
2015年档案室工作总结
2015/05/23 职场文书
关于Python中*args和**kwargs的深入理解
2021/08/07 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript