第8关:博客系统之博客查询(三)

任务描述
本关任务:实现根据博客标题模糊查询博客。

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

博客表 t_blog;

列名    类型    非空    注释
blogId    int    √    博客 ID 主键 自增
blogTitle    varchar    √    博客标题
blogContent    varchar    √    博客内容
userId    varchar    √    创建人 ID,也就是用户 ID
typeId    varchar    √    类型 ID,也就是博客类型
MySQL 连接配置:

Driver:com.mysql.jdbc.Driver;

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

user:root;

password:123123。

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

用户进入查询博客模块后,将原先的输出修改为:“查询所有博客请按1,查询自己的博客请按2,查询指定博客请按3,根据博客标题查询博客请按4,返回请按其它键”,然后获取键盘输入的信息;

如果用户输入的为 4,输出:“请输入你要查询的博客标题”,获取键盘输入的博客标题,然后调用 findBlogByTitle(String blogTitle) 方法模糊查询博客,输出:“blogId    blogTitle    blogContent    typeName    userName”,中间分隔符为 \t,然后按照上述格式输出查询数据。

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

测试输入:

1
yechen
147258369
2
4
java
5
3
预期输出:

**********欢迎进入博客系统**********
**********1. 登录**********
**********2. 注册**********
**********3. 退出系统**********
请输入你要进行的操作:
请输入你的用户名
请输入你的密码
1. 创建博客
2. 查看博客
3. 删除博客
4. 修改博客
5. 返回上一级菜单
请输入你要进行的操作:
查询所有博客请按1,查询自己的博客请按2,查询指定博客请按3,返回请按其它键
请输入你要查询的博客标题
blogId    blogTitle    blogContent    typeName    userName
2    Java简介    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。    Java    sunfeng
3    Java基础语法    一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。    Java    sunfeng
1. 创建博客
2. 查看博客
3. 删除博客
4. 修改博客
5. 返回上一级菜单
请输入你要进行的操作:
**********欢迎进入博客系统**********
**********1. 登录**********
**********2. 注册**********
**********3. 退出系统**********
请输入你要进行的操作:
退出系统!

step8/com/menu/Menu.java

package com.menu;
import com.dao.BlogDao;
import com.dao.BlogTypeDao;
import com.dao.UserDao;
import com.pojo.Blog;
import com.pojo.BlogType;
import com.pojo.User;
import java.util.Scanner;
public class Menu {
    public static void main(String[] args) {
        UserDao userDao = new UserDao();
        boolean flag = true;
        User user;
        Blog blog;
        BlogType blogType;
        BlogDao blogDao = new BlogDao();
        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("请输入你要进行的操作:");
                            int y = sc.nextInt();
                            int blogId;
                            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;
                                // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
                                /********** Begin **********/
                                case 2:
                                    System.out.println("查询所有博客请按1,查询自己的博客请按2,查询指定博客请按3,根据博客标题查询博客请按4,返回请按其它键");
                                    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);
                                        
                                    }
                                    break;

                                /********** End **********/
                                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;
                                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);
    }
}

step8/com/dao/BlogDao.java

package com.dao;

import com.pojo.Blog;
import com.pojo.BlogType;
import com.pojo.User;
import com.util.DBConnection;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

    public boolean addBlog(Blog blog) {
        boolean result = false;
        // 插入博客数据到博客表中
        try {
            conn = DBConnection.getConnection();
            String sql = "insert into t_blog (blogTitle,blogContent,userId,typeId) values (?,?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1, blog.getBlogTitle());
            ps.setString(2, blog.getBlogContent());
            ps.setInt(3, blog.getUser().getUserId());
            ps.setInt(4, blog.getBlogType().getTypeId());
            int i = ps.executeUpdate();
            // 判断是否添加成功
            if (i == 1) {
                result = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 功能:查询所有博客
     */
    public void findAllBlogs() {
        // 通过三表关联查询,查询所有的博客
        try {
            conn = DBConnection.getConnection();
            String sql = "select t.blogId blogId,t.blogTitle blogTitle,t.blogContent blogContent,t.typeName,t_user.userName userName from(select t_blog.*,blog_type.typeName from t_blog left join blog_type on t_blog.typeId = blog_type.typeId) t left join t_user on t.userId = t_user.userId;";
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            // 输出查询结果
            System.out.println("blogId\tblogTitle\tblogContent\ttypeName\tuserName");
            while (rs.next()){
                int blogId = rs.getInt("blogId");
                String blogTitle = rs.getString("blogTitle");
                String blogContent = rs.getString("blogContent");
                String typeName = rs.getString("typeName");
                String userName = rs.getString("userName");
                System.out.println(blogId+"\t"+blogTitle+"\t"+blogContent+"\t"+typeName+"\t"+userName);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 功能 查询自己创建的博客
     * 参数 user
     */
    public void findMyBlogs(User user) {
        // 通过三表关联查询,查询自己创建的博客
        try {
            conn = DBConnection.getConnection();
            String sql = "select blog.*,blog_type.typeName from (select * from t_blog where userId = ?)blog left join blog_type on blog.typeId = blog_type.typeId";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,user.getUserId());
            rs = ps.executeQuery();
            // 输出查询结果
            System.out.println("我创建的博客如下:");
            System.out.println("blogId\tblogTitle\tblogContent\ttypeName");
            while (rs.next()){
                int blogId = rs.getInt("blogId");
                String blogTitle = rs.getString("blogTitle");
                String blogContent = rs.getString("blogContent");
                String typeName = rs.getString("typeName");
                System.out.println(blogId+"\t"+blogTitle+"\t"+blogContent+"\t"+typeName);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /**
     * 功能 根据指定博客 ID 删除自己所创建的博客
     * 参数 blogId
     * 参数 user
     */
    public void deleteBlog(int blogId, User user) {
        // 根据用户 ID 和 博客 ID 删除对应的博客信息
        try {
            conn = DBConnection.getConnection();
            String sql = "delete from t_blog where userId = ? and blogId = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, user.getUserId());
            ps.setInt(2, blogId);
            int i = ps.executeUpdate();
            // 判断是否删除成功
            if (i == 1) {
                System.out.println("博客删除成功!");
            }else {
                System.out.println("博客删除失败!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 功能 根据博客 ID 修改自己创建的博客
     * 参数 blog
     */
    public void updateBlog(Blog blog) {
        try {
            conn = DBConnection.getConnection();
            String sql = "update t_blog set blogTitle = ?,blogContent = ?,typeId = ? where userId = ? and blogId = ?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,blog.getBlogTitle());
            ps.setString(2,blog.getBlogContent());
            ps.setInt(3, blog.getBlogType().getTypeId());
            ps.setInt(4, blog.getUser().getUserId());
            ps.setInt(5, blog.getBlogId());
            int i = ps.executeUpdate();
            // 判断是否删除成功
            if (i == 1) {
                System.out.println("博客修改成功!");
            }else {
                System.out.println("博客修改失败!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 功能 根据博客 ID 查询指定博客
     * 参数 blogId
     */
    public void findBlogById(int blogId) {
        // 根据博客 ID 查询指定博客
        try {
            conn = DBConnection.getConnection();
            String sql = "select t.blogTitle blogTitle,t.blogContent blogContent,t.typeName,t_user.userName userName from(select blog.*,blog_type.typeName from (select * from t_blog where blogId = ?)blog left join blog_type on blog.typeId = blog_type.typeId) t left join t_user on t.userId = t_user.userId;";
            ps = conn.prepareStatement(sql);
            ps.setInt(1,blogId);
            rs = ps.executeQuery();
            // 输出查询结果
            System.out.println("blogId\tblogTitle\tblogContent\ttypeName\tuserName");
            while (rs.next()){
                String blogTitle = rs.getString("blogTitle");
                String blogContent = rs.getString("blogContent");
                String typeName = rs.getString("typeName");
                String userName = rs.getString("userName");
                System.out.println(blogId+"\t"+blogTitle+"\t"+blogContent+"\t"+typeName+"\t"+userName);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
    /********** Begin **********/
    /**
     * 功能 根据博客标题模糊查询博客
     * 参数 blogTitle
     */
    public void findBlogByTitle(String blogTitle) {
        // 根据博客标题模糊查询博客
        try {
            conn = DBConnection.getConnection();
            String sql = "select t.blogId blogId,t.blogTitle blogTitle,t.blogContent blogContent,t.typeName,t_user.userName userName from(select blog.*,blog_type.typeName from (select * from t_blog where blogTitle like ?)blog left join blog_type on blog.typeId = blog_type.typeId) t left join t_user on t.userId = t_user.userId;";
            ps = conn.prepareStatement(sql);
            ps.setString(1,"%"+blogTitle+"%");
            rs = ps.executeQuery();
            // 输出查询结果
            System.out.println("blogId\tblogTitle\tblogContent\ttypeName\tuserName");
            while (rs.next()){
                int blogId = rs.getInt("blogId");
                String b = rs.getString("blogTitle");
                String blogContent = rs.getString("blogContent");
                String typeName = rs.getString("typeName");
                String userName = rs.getString("userName");
                System.out.println(blogId+"\t"+b+"\t"+blogContent+"\t"+typeName+"\t"+userName);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

            


    }

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

 

 

个人博客系统主要用于发表个人博客,记录个人生活日常,学习心得,技术分享等,供他人浏览,查阅,评论等。本系统结构如下: (1)博主端: 登录模块:登入后台管理系统:首先进入登录页面,需要输入账号和密码。它会使用Shiro进行安全管理,对前台输入的密 码进行加密运算,然后与数据库中的进行比较。成功后才能登入后台系统。 博客管理模块: 博客管理功能分为写博客博客信息管理。写博客是博主用来发表编写博客的,需要博客标题,然后选择博 客类型,最后将博客内容填入百度的富文本编辑器中,点击发布博客按钮即可发布博客博客类别管理模块:博主类别管理系统可以添加,修改和删除博客类型名称和排序序号。将会显示到首页的按日志类别区域。 游客可以从这里查找相的感兴趣的博客内容 评论信息管理模块:评论管理功能分为评论审核和评论信息管理两部分。评论审核是当有游客或自己发表了评论之后,博主需 要在后台管理系统中审核评论。若想将此评论显示在页面上则点击审核通过,否则点击审核不通过。 个人信息管理模块:修改博主的个人信息,可以修改昵称,个性签名,可以添加个人头像,修改个人简介; 系统管理功能模块:友情链接管理,修改密码,刷新系统缓存和安全退出,友情链接管理可以添加,修改,删除友情链接网址 (2)游客端: 查询博客查询具体哪一篇博客 查看博客内容: 查看博客内容 查看博主个人信息:查看博主个人简介 发表评论: 可以评论具体某篇博客 友情链接: 查看友情链接
Hexo是一个快速、简洁且高效的博客框架,基于Node.js开发。以下是如何在本地环境中部署Hexo博客系统的步骤: ### 1. 安装Node.js和Git 首先,确保你的系统已经安装了Node.js和Git。你可以通过以下命令来检查是否已经安装: ```bash node -v git --version ``` 如果未安装,请访问[Node.js官网](https://nodejs.org/)和[Git官网](https://git-scm.com/)下载安装包并安装。 ### 2. 安装Hexo CLI 使用npm(Node.js包管理器)全局安装Hexo CLI: ```bash npm install -g hexo-cli ``` ### 3. 初始化Hexo博客 在本地创建一个新的文件夹作为你的博客目录,并初始化Hexo: ```bash mkdir my-hexo-blog cd my-hexo-blog hexo init npm install ``` ### 4. 生成静态文件 使用以下命令生成静态文件: ```bash hexo generate ``` ### 5. 启动本地服务器 启动本地服务器并预览博客: ```bash hexo server ``` 打开浏览器并访问 `http://localhost:4000`,你应该可以看到你的Hexo博客。 ### 6. 部署到GitHub Pages 首先,在GitHub上创建一个新的仓库,命名为 `your-username.github.io`。然后,在你的博客目录下安装 `hexo-deployer-git` 插件: ```bash npm install hexo-deployer-git --save ``` 编辑 `_config.yml` 文件,添加以下配置: ```yaml deploy: type: git repo: https://github.com/your-username.github.io.git branch: main ``` 最后,使用以下命令部署博客: ```bash hexo deploy ``` ### 7. 配置自定义域名(可选) 如果你有自己的域名,可以在GitHub仓库中创建一个 `CNAME` 文件,并添加你的域名。然后,在你的域名提供商处配置DNS记录,将域名指向GitHub Pages的IP地址。 ### 8. 常用命令 - 清理生成的静态文件: ```bash hexo clean ``` - 生成静态文件并部署: ```bash hexo generate --deploy ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值