0
点赞
收藏
分享

微信扫一扫

评论表设计


MySQL评论表设计

  • ​​1. 表设计​​
  • ​​2. Mybatis 一对多映射​​
  • ​​3. SQL 查询语句​​
  • ​​4. 查询结果​​

1. 表设计

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `article_comment`;
CREATE TABLE `article_comment` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`article_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '文章id',
`comment_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '评论id',
`content` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '评论内容',
`like_num` int(11) UNSIGNED NULL DEFAULT 0 COMMENT '点赞数',
`user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id',
`article_user_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文章用户id',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文章评论' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

2. Mybatis 一对多映射

注意 在Model里面需要加属性 ​​List<ArticleCommentModel> replys;​

<resultMap id="commentResultMap" type="com.xxx.Model">
<result column="id" property="id"/>
<result column="article_id" property="articleId"/>
<result column="comment_id" property="commentId"/>
<result column="content" property="content"/>
<result column="like_num" property="likeNum"/>
<result column="user_id" property="userId"/>
<result column="article_user_id" property="articleUserId"/>
<result column="create_time" property="createTime"/>
<result column="nick_name" property="nickName"/>
<result column="head_img" property="headImg"/>
<collection property="replys" ofType="com.xxx.Model">
<result column="r_id" property="id"/>
<result column="r_article_id" property="articleId"/>
<result column="r_comment_id" property="commentId"/>
<result column="r_content" property="content"/>
<result column="r_like_num" property="likeNum"/>
<result column="r_user_id" property="userId"/>
<result column="r_article_user_id" property="articleUserId"/>
<result column="r_create_time" property="createTime"/>
<result column="r_nick_name" property="nickName"/>
<result column="r_head_img" property="headImg"/>
</collection>
</resultMap>

3. SQL 查询语句

SELECT
ft.*,
rft.id r_id,
rft.article_id r_article_id,
rft.comment_id r_comment_id,
rft.content r_content,
rft.like_num r_like_num,
rft.user_id r_user_id,
rft.article_user_id r_article_user_id,
rft.create_time r_create_time,
rft.nick_name r_nick_name,
rft.head_img r_head_img
FROM
(
SELECT
fac.*,
fu.nick_name,
fu.head_img
FROM
`article_comment` fac
LEFT JOIN user fu ON fu.id = fac.user_id < include refid = "whereEqual" />
) ft
LEFT JOIN (
SELECT
fac.*,
fu.nick_name,
fu.head_img
FROM
`article_comment` fac
LEFT JOIN user fu ON fu.id = fac.user_id
WHERE
fac.comment_id IS NOT NULL < IF test = "articleId != null and articleId != ''" >
AND fac.article_id = #{articleId}
</ IF >
) rft ON ft.id = rft.comment_id
ORDER BY
ft.id DESC,
rft.id DESC

4. 查询结果

评论表设计_数据库


举报

相关推荐

0 条评论