Spring项目:文字花园(三)

一.实现博客详情

1.后端逻辑代码

controller层添加方法(根据博客id查看博客详情)

java 复制代码
@RequestMapping("/getBlogDetail")
    public Result<BlogInfo> getBlogDetail(Integer blogId){
        log.info("getBlogDetail, blogId: {}", blogId);
        BlogInfo blogInfo = blogService.getBlogDetail(blogId);
        return Result.success(blogInfo);
    }

Service层写构造方法

java 复制代码
    public BlogInfo getBlogDetail(Integer blogId) {
        return blogMapper.selectById(blogId);
    }

mapper层:

java 复制代码
package com.example.demo.mapper;

import com.example.demo.model.BlogInfo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface BlogMapper {
    /**
     * 返回博客列表
     * @return
     */
    @Select("select * from blog where delete_flag = 0")
    List<BlogInfo> selectAll();

    /**
     * 根据博客ID, 返回博客信息
     * @return
     */
    @Select("select * from blog where id =#{id}")
    BlogInfo selectById(Integer id);

    /**
     * 更新博客
     * @return
     */

    Integer updateBlog(BlogInfo blogInfo);

    /**
     * 发布博客
     */
    @Insert("insert into blog (title, content, user_id) values (#{title}, #{content}, #{userId})")
    Integer insertBlog(BlogInfo blogInfo);


}

使用postman来进行测试

测试成功


2.前端代码

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>博客详情页</title>

    <link rel="stylesheet" href="css/common.css">
    <link rel="stylesheet" href="css/detail.css">

</head>

<body>
    <div class="nav">
        <img src="pic/rose.jpg" alt="">
        <span class="blog-title">文字花园</span>
        <div class="space"></div>
        <a class="nav-span" href="blog_list.html">主页</a>
        <a class="nav-span" href="blog_edit.html">写博客</a>
        <a class="nav-span" href="#" onclick="logout()">注销</a>
    </div>

    <div class="container">
        <div class="left">
            <div class="card">
                <img src="pic/doge.jpg" alt="">
                <h3>小李同学</h3>
                <a href="#">GitHub 地址</a>
                <div class="row">
                    <span>文章</span>
                    <span>分类</span>
                </div>
                <div class="row">
                    <span>2</span>
                    <span>1</span>
                </div>
            </div>
        </div>
        <div class="right">
            <div class="content">
                <div class="title"></div>
                <div class="date"></div>
                <div class="detail">
                </div>
                <div class="operating">
                    <button onclick="window.location.href='blog_update.html'">编辑</button>
                    <button onclick="deleteBlog()">删除</button>
                </div>
            </div>

        </div>
    </div>

    <!-- 引入 editor.md 的依赖 -->
    <link rel="stylesheet" href="blog-editormd/css/editormd.css" />
    <script src="js/jquery.min.js"></script>
    <script src="blog-editormd/lib/marked.min.js"></script>
    <script src="blog-editormd/lib/prettify.min.js"></script>
    <script src="blog-editormd/editormd.js"></script>
    <script src="js/common.js"></script>
    <script>
        $.ajax({
            type: "get",
            url: "/blog/getBlogDetail" +location.search,
            success: function(result){
                if(result.code=="SUCCESS"){
                    //填充页面
                    var blog = result.data;
                    $(".content .title").text(blog.title);
                    $(".content .date").text(blog.createTime);
                    $(".content .detail").text(blog.content);
                }
            },
            error:function(error){
                if(error!=null && error.status==401){
                    location.href = "blog_login.html";
                }
            }
        });
    </script>
</body>

</html>

展示页面

注意:

这里的时间是Date类型,不好看,我们修改String类型。

新建/utils/DateUtils

代码:

java 复制代码
package com.example.demo.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {
    public static String dateFormat(Date date){
        //2024-04-24 21:18
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return format.format(date);
    }
}
java 复制代码
package com.example.demo.model;

import com.example.demo.utils.DateUtils;
import lombok.Data;

import java.util.Date;

@Data
public class BlogInfo {
    private Integer id;
    private String title;
    private String content;
    private Integer userId;
    private Integer deleteFlag;
    private Date createTime;
    private Date updateTime;

    public String getCreateTime() {
        return DateUtils.dateFormat(createTime);
    }
}

展示:

相关推荐
鱼跃鹰飞44 分钟前
设计模式系列:工厂模式
java·设计模式·系统架构
时见先生1 小时前
Python库和conda搭建虚拟环境
开发语言·人工智能·python·自然语言处理·conda
我是伪码农1 小时前
Vue 1.23
前端·javascript·vue.js
二十雨辰1 小时前
[python]-循环语句
服务器·python
a努力。1 小时前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
Yvonne爱编码1 小时前
Java 四大内部类全解析:从设计本质到实战应用
java·开发语言·python
wqwqweee1 小时前
Flutter for OpenHarmony 看书管理记录App实战:搜索功能实现
开发语言·javascript·python·flutter·harmonyos
J2虾虾1 小时前
SpringBoot和mybatis Plus不兼容报错的问题
java·spring boot·mybatis
wypywyp2 小时前
2.虚拟机一直显示黑屏,无法打开,可能是分配的硬盘空间不够
linux·运维·服务器
m0_737302582 小时前
碳足迹精准计量,华为FusionSolar助力云服务器绿色运维
服务器