当前位置: 首页 > news >正文

多表联合分页查询(一)----数据库与返回实体类准备

目录

  • 一、数据库表准备
    • 1.文章表
    • 2.用户表
    • 3.用户详细信息表
    • 4.用户点赞表
    • 5.用户评论表
  • 二、需求描述
  • 三、返回实体类

一、数据库表准备

1.文章表

CREATE TABLE `yan_article` (`id` bigint(20) NOT NULL,`summary` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '简介',`title` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题',`view_counts` int(11) DEFAULT NULL COMMENT '浏览数量',`status` int(11) DEFAULT NULL COMMENT '文章审核',`weight` int(11) NOT NULL COMMENT '是否置顶',`author_id` bigint(20) DEFAULT NULL COMMENT '作者id',`body_id` bigint(20) DEFAULT NULL COMMENT '内容id',`activity_id` bigint(20) DEFAULT NULL COMMENT '活动ID',`category_id` int(11) DEFAULT NULL COMMENT '类别id',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

2.用户表

CREATE TABLE `yan_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',`detail_id` bigint(20) DEFAULT NULL COMMENT '用户细节ID',`username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',`email` varchar(100) DEFAULT '' COMMENT '用户邮箱',`login_date` datetime DEFAULT NULL COMMENT '最后登录时间',`status` int(1) DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`),KEY `idx_id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8;

3.用户详细信息表

CREATE TABLE `yan_details` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '个人信息ID',`full_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '真实姓名',`gender` enum('男','女') CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性别',`birth_date` date DEFAULT NULL COMMENT '出生日期',`phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '手机号码',`address_id` bigint(20) DEFAULT NULL COMMENT '居住地址',`avatar` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头像',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8;

4.用户点赞表

CREATE TABLE `yan_like` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`user_id` bigint(20) DEFAULT NULL COMMENT '用户ID',`article_id` bigint(20) DEFAULT NULL COMMENT '文章ID',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

5.用户评论表

CREATE TABLE `yan_comment` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,`create_date` datetime DEFAULT NULL,`article_id` bigint(20) NOT NULL,`author_id` bigint(20) NOT NULL,`parent_id` bigint(20) NOT NULL,`to_uid` bigint(20) NOT NULL,`level` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`remark` varchar(500) DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`) USING BTREE,KEY `article_id` (`article_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1405564731300831234 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

二、需求描述

将五张表联合起来,得到文章对应的用户信息,以及文章对应的点赞总数和评论总数。

三、返回实体类

package com.minster.yanapi.response;import lombok.Data;import java.util.Date;@Data
public class ArticleResp {private Long id;private String username;private String avatar;private Date createTime;private String title;private String summary;private Long likeCount;private Long commentCount;
}

相关文章:

  • 板块一 Servlet编程:第八节 文件上传下载操作 来自【汤米尼克的JavaEE全套教程专栏】
  • 【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-LDPC编码介绍(一)
  • 【elasticsearch】搜索结果处理
  • 【Docker】有用的命令
  • Docker Container(容器)
  • django rest framework 学习笔记-实战商城
  • c++的静态多态和动态多态
  • 《艾尔登法环 黄金树幽影》是什么?Mac电脑怎么玩《艾尔登法环》艾尔登法环下载
  • 五个使用Delphi语言进行开发的案例
  • [rust] 11 所有权
  • 网络原理 HTTP _ HTTPS
  • 跨环境前端组件库打包方案(node+esm)
  • 微信小程序 --- 通用模块封装(showToast,showModal ,本地存储)
  • wo-gradient-card是一款采用uniapp实现的透明辉光动画卡片
  • ELK入门(四)-logstash
  • #Java异常处理
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • C++入门教程(10):for 语句
  • CentOS7简单部署NFS
  • classpath对获取配置文件的影响
  • co模块的前端实现
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java到底能干嘛?
  • js递归,无限分级树形折叠菜单
  • mac修复ab及siege安装
  • Python爬虫--- 1.3 BS4库的解析器
  • Python十分钟制作属于你自己的个性logo
  • vue学习系列(二)vue-cli
  • 工程优化暨babel升级小记
  • 京东美团研发面经
  • 来,膜拜下android roadmap,强大的执行力
  • 前端技术周刊 2019-01-14:客户端存储
  • 手机端车牌号码键盘的vue组件
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Z2294. 打印树的直径
  • (a /b)*c的值
  • (C++)八皇后问题
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (篇九)MySQL常用内置函数
  • (转)【Hibernate总结系列】使用举例
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)详解PHP处理密码的几种方式
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***详解账号泄露:全球约1亿用户已泄露
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .bat批处理(一):@echo off