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

第11关:博客系统之查询博客评论

任务描述
本关任务:在上一关中,我们查询了自己发布的评论,本关要求实现查询博客的所有评论的功能。

相关数据说明
MySQL 数据库 mydb;

博客评论表 t_comment;

列名    类型    非空    注释
commentId    int    √    评论 ID 主键 自增
commentContent    varchar    √    博客标题
blogId    varchar    √    博客 ID
createTime    varchar    √    评论时间
userId    varchar    √    评论人 ID,也就是用户 ID
MySQL 连接配置:

Driver:com.mysql.jdbc.Driver;

URL:jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8;

user:root;

password:123123。

编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现查询博客的评论的功能,具体要求如下:

用户查询完博客后,可以进行发布评论和查询评论,在之前的关卡中,当用户输入 1 后会进入发布评论,这里我们需要实现当用户输入 2 后可以查看该博客的所有评论;

当用户进入查看评论模块后,首先,我们判断博客 ID 是否为 0,如果为 0,输出:“请输入你要查看评论的博客ID”,获取键盘输入的博客 ID,如果不为 0,则使用该博客 ID,调用 CommentDao 的 findCommentById(int BlogId),根据博客 ID 查询这个博客的所有评论;

在该方法中,依次输出:“博客的评论如下:”、“blogId    blogTitle    blogContent    commentContent    userName”,并按照上述格式输出查询的评论;

修改之前的发布评论方法,当用户发布完评论后,输出:“评论发布成功!”后,进入用户查询该博客所有评论的模块。

测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧“测试结果”区查看具体的测试集详情。

测试输入:

1
sunfeng
123456789
2
3
2
2
5
3
预期输出:

**********欢迎进入博客系统**********
**********1. 登录**********
**********2. 注册**********
**********3. 退出系统**********
请输入你要进行的操作:
请输入你的用户名
请输入你的密码
1. 创建博客
2. 查看博客
3. 删除博客
4. 修改博客
5. 返回上一级菜单
6. 查询自己的评论
请输入你要进行的操作:
查询所有博客请按1,查询自己的博客请按2,查询指定博客请按3,返回请按其它键
请输入你要查询的博客ID
blogId    blogTitle    blogContent    typeName    userName
2    Java简介    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。    Java    sunfeng
发布评论请按1,查询所有评论请按2,请按其它键
博客的评论如下:
blogId    blogTitle    blogContent    commentContent    userName
2    Java简介    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。    Java好难啊    sunfeng
2    Java简介    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。    Java啊啊啊    yechen
1. 创建博客
2. 查看博客
3. 删除博客
4. 修改博客
5. 返回上一级菜单
6. 查询自己的评论
请输入你要进行的操作:
**********欢迎进入博客系统**********
**********1. 登录**********
**********2. 注册**********
**********3. 退出系统**********
请输入你要进行的操作:
退出系统!

step11/com/menu/Menu.java

package com.menu;
import com.dao.BlogDao;
import com.dao.BlogTypeDao;
import com.dao.CommentDao;
import com.dao.UserDao;
import com.pojo.Blog;
import com.pojo.BlogType;
import com.pojo.Comment;
import com.pojo.User;

import java.util.Date;
import java.util.Scanner;
public class Menu {
    public static void main(String[] args) {
        UserDao userDao = new UserDao();
        boolean flag = true;
        User user;
        Blog blog;
        Comment comment;
        BlogType blogType;
        BlogDao blogDao = new BlogDao();
        CommentDao commentDao = new CommentDao();
        BlogTypeDao blogTypeDao = new BlogTypeDao();
        Scanner sc = new Scanner(System.in);
        do {
            System.out.println("**********欢迎进入博客系统**********");
            System.out.println("**********1. 登录**********");
            System.out.println("**********2. 注册**********");
            System.out.println("**********3. 退出系统**********");
            System.out.println("请输入你要进行的操作:");
            int x = sc.nextInt();
            String userName;
            String passWord;
            String phone;
            switch (x) {
                case 1:
                    // 获取键盘输入的用户信息
                    System.out.println("请输入你的用户名");
                    userName = sc.next();
                    System.out.println("请输入你的密码");
                    passWord = sc.next();
                    user = userDao.login(userName,passWord);
                    if (user != null) {
                        boolean flag1 = true;
                        do{
                            System.out.println("1. 创建博客");
                            System.out.println("2. 查看博客");
                            System.out.println("3. 删除博客");
                            System.out.println("4. 修改博客");
                            System.out.println("5. 返回上一级菜单");
                            System.out.println("6. 查询自己的评论");
                            System.out.println("请输入你要进行的操作:");
                            int y = sc.nextInt();
                            int blogId = 0;
                            String blogTitle;
                            String blogContent;
                            String typeName;
                            switch (y){
                                case 1:
                                    // 获取键盘输入的用户信息
                                    System.out.println("请输入你要创建的博客标题");
                                    blogTitle = sc.next();
                                    System.out.println("请输入你要创建的博客内容");
                                    blogContent = sc.next();
                                    System.out.println("请输入你的博客类型");
                                    typeName = sc.next();
                                    // 查询博客类型是否存在
                                    blogType = blogTypeDao.findBlogType(typeName);
                                    if (blogType != null){
                                        // 将博客信息放入博客对象中
                                       blog = new Blog();
                                       blog.setBlogTitle(blogTitle);
                                       blog.setBlogContent(blogContent);
                                       blog.setUser(user);
                                       blog.setBlogType(blogType);
                                       // 验证博客是否创建成功
                                        boolean b = blogDao.addBlog(blog);
                                        if (b){
                                            System.out.println("博客创建成功!");
                                        }else{
                                            System.out.println("博客创建失败!");
                                        }
                                    }else {
                                        System.out.println("博客类型不存在!");
                                    }
                                    break;
                                case 2:
                                    System.out.println("查询所有博客请按1,查询自己的博客请按2,查询指定博客请按3,返回请按其它键");
                                    String find = sc.next();
                                    // 查询所有的博客
                                    if ("1".equals(find)){
                                        blogDao.findAllBlogs();
                                    // 查询自己的博客
                                    }else if ("2".equals(find)){
                                        blogDao.findMyBlogs(user);
                                    }else if ("3".equals(find)){
                                        // 获取键盘输入的博客 ID
                                        System.out.println("请输入你要查询的博客ID");
                                        blogId = sc.nextInt();
                                        // 查询博客
                                        blogDao.findBlogById(blogId);
                                    }else if ("4".equals(find)){
                                        // 获取键盘输入的博客标题
                                        System.out.println("请输入你要查询的博客标题");
                                        blogTitle = sc.next();
                                        // 查询博客
                                        blogDao.findBlogByTitle(blogTitle);
                                    }else {
                                        break;
                                    }
                                    // 获取用户是否想要发布评论
                                    System.out.println("发布评论请按1,查询所有评论请按2,请按其它键");
                                    String c = sc.next();
                                    // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
                                    /********** Begin **********/

                                    if ("1".equals(c)){
                                        // 获取用户评论的博客
                                        if (blogId == 0){
                                            System.out.println("请输入你要评论的博客ID");
                                            blogId = sc.nextInt();
                                        }
                                        // 查询博客是否存在
                                        if (blogDao.checkBlogById(blogId)){
                                            // 获取用户评论的内容
                                            System.out.println("请输入你要评论的内容");
                                            String commentContent  = sc.next();
                                            Date date = new Date();
                                            blog = new Blog();
                                            blog.setBlogId(blogId);
                                            comment = new Comment();
                                            comment.setCommentContent(commentContent);
                                            comment.setBlog(blog);
                                            comment.setUser(user);
                                            comment.setDate(date);
                                            // 将评论内容添加
                                            commentDao.addComment(comment);
                                            // 评论添加成功后进入查询该博客所有评论模块
                                            c = "2";
                                        }else {
                                            System.out.println("博客不存在");
                                        }
                                    }
                                    if ("2".equals(c)){
                                        // 判读博客 ID 是否为 0
                                        if (blogId == 0){
                                            System.out.println("请输入你要查看评论的博客ID");
                                            blogId = sc.nextInt();
                                        }
                                        // 查询该博客所有评论
                                        commentDao.findCommentById(blogId);
                                        

                                      
                                        /********** End **********/
                                    }
                                    break;
                                case 3:
                                    System.out.println("请输入你要删除的博客ID");
                                    blogId = sc.nextInt();
                                    // 删除博客
                                    blogDao.deleteBlog(blogId, user);
                                    break;
                                case 4:
                                    // 获取用户键盘输入信息
                                    System.out.println("请输入你要修改的博客ID");
                                    blogId = sc.nextInt();
                                    System.out.println("请输入修改后的博客标题");
                                    blogTitle = sc.next();
                                    System.out.println("请输入修改后的博客内容");
                                    blogContent = sc.next();
                                    System.out.println("请输入修改后的博客类型");
                                    typeName = sc.next();
                                    // 查询博客类型是否存在
                                    blogType = blogTypeDao.findBlogType(typeName);
                                    if (blogType != null){
                                        // 将博客信息存入博客对象中
                                        blog = new Blog();
                                        blog.setBlogId(blogId);
                                        blog.setBlogTitle(blogTitle);
                                        blog.setBlogContent(blogContent);
                                        blog.setUser(user);
                                        blog.setBlogType(blogType);
                                        // 修改博客
                                        blogDao.updateBlog(blog);
                                    }else {
                                        System.out.println("博客类型不存在!");
                                    }
                                    break;
                                case 5:
                                    flag1 = false;
                                    break;
                                case 6:
                                    // 调用 findMyComments 方法查询自己发布的评论
                                    commentDao.findMyComments(user);

                                    break;
                                default:
                                    System.out.println("你的输入有误,请重新输入!");
                                    break;
                            }
                        }while (flag1);
                    }else{
                        System.out.println("用户名或密码不正确!");
                    }
                    break;
                case 2:
                    user = new User();
                    // 获取键盘输入的用户信息
                    System.out.println("请输入你要注册的用户名");
                    userName = sc.next();
                    System.out.println("请输入你要注册的密码");
                    passWord = sc.next();
                    System.out.println("请输入你要注册的手机号");
                    phone = sc.next();
                    // 将用户信息存入用户对象中
                    user.setUserName(userName);
                    user.setPassWord(passWord);
                    user.setPhone(phone);
                    // 调用 register 方法,将用户信息传入其中,判断注册是否成功
                    boolean result = userDao.register(user);
                    if (result) {
                        System.out.println("注册成功!");
                    }else{
                        System.out.println("注册失败!");
                    }
                    break;
                case 3:
                    // 设置状态为 false,退出系统
                    flag = false;
                    System.out.println("退出系统!");
                    break;
                default:
                    System.out.println("你的输入有误,请重新输入!");
                    break;
            }
        } while (flag);
    }
}

step11/com/dao/CommentDao.java

package com.dao;

import com.pojo.Comment;
import com.pojo.User;
import com.util.DBConnection;

import java.sql.*;

public class CommentDao {
    static Connection conn = null; // 连接对象
    static PreparedStatement ps = null; // 预编译
    static ResultSet rs = null; // 结果集



    /**
     * 功能 添加评论
     * 参数 comment
     */
    public void addComment(Comment comment) {
        try {
            conn = DBConnection.getConnection();
            String sql = "insert into t_comment (commentContent,blogId,createTime,userId) values (?,?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1, comment.getCommentContent());
            ps.setInt(2, comment.getBlog().getBlogId());
            ps.setTimestamp(3, new Timestamp(comment.getDate().getTime()));
            ps.setInt(4, comment.getUser().getUserId());
            int i = ps.executeUpdate();
            // 判断是否添加成功
            if (i == 1) {
                System.out.println("评论发布成功!");
            }else {
                System.out.println("评论发布失败!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 功能 查询自己发步的评论
     * @param user
     */
    public void findMyComments(User user) {
        // 通过三表关联查询,查询自己发步的评论
        try {
            conn = DBConnection.getConnection();
            String sql = "select t_blog.blogId blogId,t_blog.blogTitle blogTitle,t_blog.blogContent blogContent,comment.commentContent from (select * from t_comment where userId = ?)comment left join t_blog on comment.blogId = t_blog.blogId";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,user.getUserId());
            rs = ps.executeQuery();
            // 输出查询结果
            System.out.println("我发布的评论如下:");
            System.out.println("blogId\tblogTitle\tblogContent\tcommentContent");
            while (rs.next()){
                int blogId = rs.getInt("blogId");
                String blogTitle = rs.getString("blogTitle");
                String blogContent = rs.getString("blogContent");
                String commentContent = rs.getString("commentContent");
                System.out.println(blogId+"\t"+blogTitle+"\t"+blogContent+"\t"+commentContent);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
    /********** Begin **********/
    /**
     * 功能 查询博客的所有评论
     * 参数 blogId
     */
    public void findCommentById(int blogId) {
        // 根据 ID 查询博客的所有评论
        try {
            conn = DBConnection.getConnection();
            String sql = "select t.blogId blogId,t.blogTitle blogTitle,t.blogContent blogContent,t.commentContent,t_user.userName from (select t_blog.blogId blogId,t_blog.blogTitle blogTitle,t_blog.blogContent blogContent,comment.commentContent,comment.userId userId from (select * from t_comment where blogId = ?)comment left join t_blog on comment.blogId = t_blog.blogId)t left join t_user on t.userId = t_user.userId\n";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,blogId);
            rs = ps.executeQuery();
            // 输出查询结果
            System.out.println("博客的评论如下:");
            System.out.println("blogId\tblogTitle\tblogContent\tcommentContent\tuserName");
            while (rs.next()){
                String blogTitle = rs.getString("blogTitle");
                String blogContent = rs.getString("blogContent");
                String commentContent = rs.getString("commentContent");
                String userName = rs.getString("userName");
                System.out.println(blogId+"\t"+blogTitle+"\t"+blogContent+"\t"+commentContent+"\t"+userName);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }




    }



    /********** End **********/
}

 

 


http://www.kler.cn/a/459680.html

相关文章:

  • php 静态变量
  • 【大模型】wiki中文语料的word2vec模型构建
  • 【欢迎讨论方案一的可行性】SpringBoot集成netty,在handler中调用@Component注解的类
  • 矩阵运算提速——玩转opencv::Mat
  • 《机器学习》从入门到实战——逻辑回归
  • filebeat采集应用程序日志和多行匹配
  • 揭秘 Fluss 架构组件
  • 手撕算法-严刑拷打
  • 基础数据结构--二叉树
  • 搭建知识中台:大健康零售行业的数字化升级之路
  • Apollo 自动驾驶全景解析
  • keepalived详细笔记
  • PHP语言的软件开发工具
  • 金蝶V10中间件的使用
  • STM32 软件I2C读写
  • 用c++或c 做一个深度遍历的 棋谱树,我用来 做围棋棋谱的教学,要求节省内存、效率高,便于保存(棋谱)和拷贝棋谱
  • Unity 使用UGUI制作卷轴开启关闭效果
  • 【C#】元组
  • 【GO基础学习】gin的使用
  • ArcGIS教程(009):ArcGIS制作校园3D展示图
  • 基于 `android.accessibilityservice` 的 Android 无障碍服务深度解析
  • 20241227通过配置nomodeset参数解决更新grub之后,ubuntu20.04.5无法启动的问题
  • 移动 APP 设计规范参考
  • GXUOJ-算法-第二次作业(矩阵连乘、最长公共子序列、0-1背包问题、带权区间调度)
  • 工厂方法模式详解
  • Redis - 1 ( 7000 字 Redis 入门级教程 )