TinyBlog 后端开发 SpringBoot+JdbcTemplate 版本

835 阅读4分钟

0 项目概述

TinyBlog 是一个博客系统,正如其名 Tiny,它是一个极其微小小小小小小👌的博客系统,定位是一个用于学习各种技术的 Demo 应用😀。

本文主要是实现其最最基础的后端接口(CRUD),支持新增博客、查询博客、修改博客和删除博客。后续接口功能按需添加~这是一个前后端分离的项目,因此本文只涉及后端接口部分。

1 项目设计

1.1 表结构设计

目前先考虑最基础的博客功能,只设计了 blog 表,以及基础的几个字段。

1.2 接口设计

先提供最基础的 CRUD 的 RESTFul 接口,后续需要再补充。

请求URL接口说明
POST/api/blog创建一篇博客
GET/api/blog获取所有博客
GET/api/blog/:id获取 id 为 :id 的博客
PUT/api/blog/:id更新 id 为 :id 的博客
DELETE/api/blog/:id删除 id 为 :id 的博客

1.3 技术栈

  • Java 8
  • Spring Boot, Spring MVC, Spring Data JDBC
  • MySQL

1.4 开发工具

  • IDEA, Postman, Navicat, VS Code

2 环境搭建

2.1 准备数据库环境

创建 tinyblog 库,然后创建 blog 表。

-- 创建 tinyblog 库
CREATE DATABASE `tinyblog` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

-- 创建 blog 表
CREATE TABLE `blog`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NULL,
  `description` varchar(255) NULL,
  `status` int(255) NULL,
  `content` varchar(255) NULL,
  PRIMARY KEY (`id`)
);

2.2 创建项目工程

新建 IDEA 工程,选择通过 Spring Initializr 初始化项目。

填入项目信息。

选择项目依赖。

2.3 项目配置

字符编码、Maven 配置(Maven 建议更换为自己的 Maven 替换国内的镜像)这些都不说了,先检查一下。

然后打开 pom.xml 检查一下,确保有这几个依赖。

打开 application.properties 配置上我们的数据库信息。

3 编写代码

开发环境准备好之后,接下来就是编写代码了。我们按照 Entity -> DAO -> Service -> Controller 的顺序,自底向上地的编写代码。

3.1 创建数据模型

首先,我们新建 model 包,并新增我们的实体类 Blog

3.2 创建 DAO

接着我们创建 repository 包,新增 DAO(Data Access Object) 接口 BlogDao,以及其实现类 JdbcBlogDao

里面定义了我们接口将会用到的,针对数据库的 CRUD 操作。

3.3 创建 Service

Service 层通常作为我们实现业务逻辑的地方。虽然目前 TinyBlog 的业务逻辑十分简单,但是我们还是创建 service 包,以及 BlogService 接口及其实现类 BlogServiceImpl,其中我们将会调用刚刚创建的 Dao 完成数据库操作,提供一个完整增删改查服务。

3.4 创建 Controller

最后就是创建 Controller,提供对外的 RESTFul 接口。

完整的项目结构如下。

完整代码可以在 Gitee https://gitee.com/noissues/tinyblog-springboot-jdbctemplate.git 获取。

4 运行 & 测试

运行项目,打开 Postman 对我们开发的接口进行测试。

4.1 创建博客接口

使用 Postman 调用接口创建博客。

检查数据库,记录插入成功。

4.2 查询博客接口

1 查询所有博客

不加任何参数的查询接口,将会查询出所有的数据。

2 根据 ID 查询博客

注意还应该测试 ID 查询不到的情况,然后就发现了,JdbcTemplate 的 queryForObject方法,当查不到数据时会抛出 EmptyResultDataAccessException 异常。因此需要针对这个查询进行异常处理。

3 根据标题查询博客

4.3 更新博客接口

更新博客接口支持增量更新,也就是说可以只修改博客的状态或者标题等。

这里有个注意的是,一开始使用了 Spring 的 BeanUtil 拷贝。这样写是有问题的,因为它不会过滤掉值为 null 的属性,而我们需要的是增量更新。

于是参考了网上的做法,自己实现了一个忽略 Null 值的拷贝方法。

然后调用更新接口,也是 OK 的。

4.4 删除博客接口

删除指定 id 的博客。

5 总结

本文主要采用 Spring Boot + JdbcTemplate 实现了一个简单的博客系统,提供了 CRUD 的 RESTFul 接口,使用了 MySQL 作为持久化存储,实现了最基础的增删改查功能。

最后,如果有什么想法或者建议,欢迎评论区留言。