基于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 相关文章推荐
Javascript开发包大全整理
Dec 22 Javascript
Javascript Cookie读写删除操作的函数
Mar 02 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
Feb 25 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
Feb 20 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
Mar 06 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 Javascript
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
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
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
js实现列表按字母排序
2020/08/11 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Python给图像添加噪声具体操作
2019/03/03 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python实现低通滤波器代码
2020/02/26 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
求职信模版
2013/11/30 职场文书
学校安全检查制度
2014/01/27 职场文书
运动会开幕式主持词
2014/03/28 职场文书
大一新生期末自我评价
2014/09/12 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏