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 DESC4. 查询结果

                
                










