基于Angularjs+mybatis实现二级评论系统(仿简书)
发布时间 - 2026-01-10 23:00:55 点击率:次一直想写个评论系统,看了下多说,网易,简书的评论,想了下自己该实现怎样的评论系统。

评论系统关键是嵌套层数以及数据库表设计。嵌套层数多,表结构复杂,呈现也麻烦,最后决定实现一个二级评论。系统由maven构建,springboot快速搭建spring环境。前台采用angularjs+bootstrap,后台使用springmvc+mybatis,数据库采用MySQL.前台请求后台API操作评论。
目录结构
数据库表设计
##说说表或者文章表 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和PHP的Laravel实现单页评论的方法
# Angular实现类似博客评论的递归显示及获取回复评论的数据
# 层数
# 看了
# 想了
# 网易
# 多说
# 大家多多
# 想写
# sayingAvatar
# author
# datetime
# createTime
# likes
# PRIMARY
# KEY
# sayingContent
# VARCHAR
# AUTO_INCREMENT
# commenter
# sayingId
# flc_id
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
如何在搬瓦工VPS快速搭建网站?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Swift开发中switch语句值绑定模式
教你用AI将一段旋律扩展成一首完整的曲子
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel怎么连接多个数据库_Laravel多数据库连接配置
浅谈Javascript中的Label语句
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Laravel如何记录自定义日志?(Log频道配置)
北京企业网站设计制作公司,北京铁路集团官方网站?
Mybatis 中的insertOrUpdate操作
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Python文件异常处理策略_健壮性说明【指导】
利用JavaScript实现拖拽改变元素大小
JS碰撞运动实现方法详解
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel如何实现本地化和多语言支持?(i18n教程)
Laravel storage目录权限问题_Laravel文件写入权限设置
Python图片处理进阶教程_Pillow滤镜与图像增强
如何注册花生壳免费域名并搭建个人网站?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Laravel如何处理异常和错误?(Handler示例)
Linux系统命令中screen命令详解
Laravel如何使用Eloquent进行子查询
如何在云主机快速搭建网站站点?
如何快速启动建站代理加盟业务?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel如何自定义分页视图?(Pagination示例)
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
如何为不同团队 ID 动态生成多个独立按钮
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
佛山企业网站制作公司有哪些,沟通100网上服务官网?
西安专业网站制作公司有哪些,陕西省建行官方网站?
南京网站制作费用,南京远驱官方网站?
微信小程序 配置文件详细介绍
昵图网官方站入口 昵图网素材图库官网入口
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
canvas 画布在主流浏览器中的尺寸限制详细介绍

