废弃说明:
这个专栏的文章本意是记录笔者第一次搭建博客的过程,文章里里有很多地方的写法都不太恰当,现在已经废弃,关于SpringBoot + Vue 博客系列,笔者重新写了这个系列的文章,不敢说写的好,但是至少思路更加清晰,还在看SpringBoot + Vue 博客系列文章的朋友可以移步:https://blog.csdn.net/li3455277925/category_10341110.html,文章中有错误的地方或者大家有什么意见或建议都可以评论或者私信交流。
0. 实体类设计
- 新建
com.qianyucc.blog.model.entity.ArticleDO
对应数据库中文章表
package com.qianyucc.blog.model.entity;
import lombok.*;
import javax.persistence.*;
@Data
@Entity
@Table(name = "article")
public class ArticleDO {
@javax.persistence.Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "author", nullable = false, length = 20)
private String author;
@Column(name = "title", length = 100)
private String title;
@Column(name = "content", columnDefinition = "clob not null")
private String content;
@Column(name = "tags", length = 50)
private String tags;
private Integer type;
@Column(name = "category", length = 50)
private String category;
@Column(name = "gmt_create")
private Long gmtCreate;
@Column(name = "gmt_update")
private Long gmtUpdate;
private String tabloid;
private Integer comments;
private Integer views;
}
字段名称 | 字段含义 |
---|
id | 主键 |
author | 文章作者 |
title | 文章标题 |
content | 文章内容,markdown格式 |
tags | 文章标签,多个标签使用英文逗号隔开 |
type | 文章类型(1为原创,0位转载) |
category | 文章类别 |
gmtCreate | 文章创建时间 |
gmtUpdate | 文章更新时间 |
tabloid | 文章摘要 |
comments | 文章评论数 |
views | 文章浏览数 |
- 新建
com.qianyucc.blog.model.entity.UserDO
类,对应数据库中的用户表
package com.qianyucc.blog.model.entity;
import lombok.*;
import javax.persistence.*;
@Data
@Entity
@Table(name = "user")
public class UserDO {
@Id
private Long id;
@Column(name = "name", length = 20)
private String name;
@Column(name = "login", length = 50)
private String login;
@Column(name = "avatar_url")
private String avatarUrl;
private String bio;
private String token;
@Column(name = "gmt_create")
private Long gmtCreate;
@Column(name = "gmt_update")
private Long gmtUpdate;
}
字段名称 | 字段含义 |
---|
id | 主键 |
name | 用户昵称 |
login | 用户名 |
avatarUrl | 头像链接 |
bio | 用户描述 |
token | 用户登录标识 |
gmtCreate | 用户第一次登录时间 |
gmtUpdate | 用户最近登录时间 |
- 新建
com.qianyucc.blog.model.entity.CommentDO
类,对应数据库中评论表
package com.qianyucc.blog.model.entity;
import lombok.*;
import javax.persistence.*;
@Data
@Entity
@Table(name = "comment")
public class CommentDO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "parent_id")
private Long parentId;
private Integer type;
private Long commentator;
@Column(name = "content", columnDefinition = "clob not null")
private String content;
@Column(name = "gmt_create")
private Long gmtCreate;
@Column(name = "gmt_update")
private Long gmtUpdate;
private Long likes;
private Long comments;
}
字段名称 | 字段含义 |
---|
id | 主键 |
parentId | 父级id,如果为文章评论就为文章id,如果为二级评论就为一级评论的id |
type | 评论类型( 1表示文章评论,2表示二级评论) |
commentator | 评论人id,匿名用户id为0L |
content | 评论内容 |
gmtCreate | 评论创建时间 |
gmtUpdate | 评论更新时间 |
likes | 评论点赞数 |
comments | 评论的评论数 |
1. 创建数据库访问层
- 新建
com.qianyucc.blog.repository.UserRepository
接口,com.qianyucc.blog.repository.CommentRepository
接口,com.qianyucc.blog.repository.ArticleRepository
接口分别继承JpaRepository
,JpaSpecificationExecutor
接口,之后就有了CRUD的功能
package com.qianyucc.blog.repository;
import com.qianyucc.blog.model.entity.*;
import org.springframework.data.jpa.repository.*;
public interface ArticleRepository extends JpaRepository<ArticleDO, Long>, JpaSpecificationExecutor<ArticleDO> {
}
package com.qianyucc.blog.repository;
import com.qianyucc.blog.model.entity.*;
import org.springframework.data.jpa.repository.*;
public interface CommentRepository extends JpaRepository<CommentDO, Long>, JpaSpecificationExecutor<CommentDO> {
}
package com.qianyucc.blog.repository;
import com.qianyucc.blog.model.entity.*;
import org.springframework.data.jpa.repository.*;
public interface UserRepository extends JpaRepository<UserDO, Long>, JpaSpecificationExecutor<UserDO> {
}
2.创建测试Controller
- 新建
com.qianyucc.blog.controller.comm.TestController
用于测试 - 这里顺便推荐一款插件:
GenerateAllSetter
,安装插件之后使用Alt+Enter
就可以自动调出所有的setter方法,效果如下:
package com.qianyucc.blog.controller.comm;
import com.qianyucc.blog.model.entity.*;
import com.qianyucc.blog.repository.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class TestController {
@Autowired
private ArticleRepository articleRepository;
@GetMapping("/ins")
public String ins() {
ArticleDO articleDO = new ArticleDO();
articleDO.setId(0L);
articleDO.setAuthor("qianyu");
articleDO.setTitle("How to learn SpringBoot");
articleDO.setContent("study hard");
articleDO.setTags("java");
articleDO.setType(0);
articleDO.setCategory("study");
articleDO.setGmtCreate(0L);
articleDO.setGmtUpdate(0L);
articleDO.setTabloid("");
articleDO.setComments(0);
articleDO.setViews(0);
articleRepository.save(articleDO);
return "ok";
}
@GetMapping("/get")
public List<ArticleDO> get() {
return articleRepository.findAll();
}
}
3. 在浏览器中测试
- 先在浏览器输入
http://localhost:8886/ins
将数据插入数据库:
- 然后输入
http://localhost:8886/get
从数据库中取出数据: