搭建个人博客项目

目录

创建Spring  Boot项目:

配置MySQL数据库:

​创建博客实体类:

在MySQL中创建一个名为blog的数据库表

创建一个博客Repository接口

​创建一个博客Service接口

​创建一个博客Controller类

配置Redis

创建HTML模板

创建前端页面

访问项目


1.创建Spring  Boot项目

使用Spring  Initializr(https://start.spring.io/)创建一个新的Spring  Boot项目,选择Web、JPA和MySQL等依赖。

目录如下


2.配置MySQL数据库

在application.properties文件中添加MySQL连接信息,例如:
spring.datasource.url=jdbc
mysql://localhost
3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update


3.创建博客实体类

创建一个名为Blog的类,包含博客的标题、内容、创建时间等属性,并使用@Entity注解标记该类。

@Id
@GeneratedValue
private Long id;
private String title;

@Basic(fetch = FetchType.LAZY)
@Lob
private String content;
@Temporal(TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(TemporalType.TIMESTAMP)
private Date updateTime;
private String description;
private String flag;
private Integer views;
private String image;


4.在MySQL中创建一个名为blog的数据库表

表包含id、title、content、create_time等字段,并使用Blog实体类的属性作为字段名。


5.创建一个博客Repository接口

继承JpaRepository接口,并注入Blog实体类。

@Query("select b from Blog b ")
List<Blog> findTop(Pageable pageable);

//select * from t_blog where title like '%内容%'
@Query("select b from Blog b where b.title like ?1 or b.content like ?1")
Page<Blog> findByQuery(String query, Pageable pageable);


6.创建一个博客Service接口

定义博客的增加、删除、修改、查询等方法。然后创建一个博客ServiceImpl类,实现BlogService接口,并注入BlogRepository和RedisTemplate等依赖。

Blog getBlog(Long id);

Page<Blog> listBlog(Pageable pageable);

List<Blog> listRecommendBlogTop(Integer size);

Long countBlog();

Blog saveBlog(Blog blog);


7.创建一个博客Controller类

定义博客的CRUD操作方法,并注入BlogServiceImpl依赖。

protected final static int PageBreak = 5;

@Autowired
private BlogService blogService;

@GetMapping("/")
public String home(@PageableDefault(size = BlogController.PageBreak, sort = {"updateTime"}, direction = Sort.Direction.DESC) Pageable pageable, Model model) {
long blogTotal = blogService.countBlog();
int pageNumber = pageable.getPageNumber();
long pageCount = 0;

long rem = blogTotal % BlogController.PageBreak;
if (rem == 0) {
pageCount = blogTotal / BlogController.PageBreak;
} else {
pageCount = (blogTotal - rem) / BlogController.PageBreak + 1;
}

if ((pageNumber + 1) > pageCount || pageNumber < 0) {
model.addAttribute("message", "哦吼,没有找到当前页面的博客信息哦!");
return "client/404";
}

pageNumber++;

model.addAttribute("blogs", blogService.listBlog(pageable));
model.addAttribute("blogTotal", blogTotal);
model.addAttribute("currentPage", pageNumber);
model.addAttribute("pageCount", pageCount);

List<Integer> navigators = new ArrayList<Integer>();

if (pageNumber - 1 > 0) {
if (pageNumber - 2 > 0 && pageNumber == pageCount) {
navigators.add(pageNumber - 2);
}
navigators.add(pageNumber - 1);
}

navigators.add(pageNumber);


if (pageNumber + 1 <= pageCount) {
navigators.add(pageNumber + 1);
if (pageNumber + 2 < pageCount && pageNumber == 1) {
navigators.add(pageNumber + 2);
}
}

model.addAttribute("navigators", navigators);
model.addAttribute("recommendBlogTop", blogService.listRecommendBlogTop(15));
return "client/home";
}

@GetMapping("blog/{id}")
public String blog(@PathVariable Long id, Model model) {
Blog blog = blogService.getBlog(id);
if (blog == null) {
model.addAttribute("message", "哦吼,没有找到当前的博客记录哦!");
return "client/404";
}
model.addAttribute("blog", blog);
blog.addView();

blogService.saveBlog(blog);
return "client/blog";
}


8.配置Redis

在application.properties文件中添加Redis连接信息,例如:
spring.redis.host=localhost
spring.redis.port=6379


9.创建HTML模板

使用Thymeleaf或FreeMarker等模板引擎创建HTML模板,用于展示博客内容。


10.创建前端页面

使用HTML、CSS和JavaScript等技术创建前端页面,与后端接口进行交互。


11.访问项目

望这些指导对您有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值