使用springboot来搭建一个博客类型的网站(三)操作MySQL

前言

上篇我们讲到如何使用springboot编写一个接口返回一个写死的JSON数据,本篇我们来学习如何链接数据库,把数据库的里面的数据查找出来,并完成一个接口的编写,
在学习之前,你需要简单了解一下sql的语法

配置文件

配置文件默认位置:src/main/resources/application.properties
配置文件的书写形式比较简单,形式如下

key = value

这里我们只演示一下如何修启动端口

+++
server.port=8020
+++

使用MySQL

我们首先创建一个文章的表

CREATE TABLE `article` (
  `id` int(11) NOT NULL,
  `title` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `detail` text COLLATE utf8mb4_general_ci NOT NULL,
  `status` int(11) NOT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

安装依赖

我们用JdbcTemplate来链接mysql数据库
我们打开项目根目录的pom.xml在标签dependencies里面添加mysql、jdbc、druid依赖,添加完之后idea会自动根据我们新修改的pom.xml来更新依赖

<dependencies>
    +++
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.14</version>
    </dependency>
   +++
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

修改配置文件

server.port=8020
+++
spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Shanghai // 链接端口号后面是表数据库名称
spring.datasource.username=root  // 数据库账户
spring.datasource.password=123456 // 数据库密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+++

修改完配置文件,需要重新启动项目

新增一篇文章 @PostMapping

我们的数据库表是已经建好了,但是里面没有一条数据,接下来我们通过写一个接口来调用,往数据库里面添加一篇文章。

在controller下新建一个名为ArticleController

package com.semyin.blog.controller;


import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
@ResponseBody
public class ArticleController {

    @Resource
    private JdbcTemplate jdbcTemplate;

    @PostMapping("/articles")
    public String addArticle() {
        String sql = "INSERT INTO article(id, title, detail, status, create_time, update_time) VALUES(1, '测试标题', '我是测试内容', 1, '2022-03-24 16:53:55.63', '2022-03-24 16:53:55.63')";
        int num = jdbcTemplate.update(sql);
        if (num > 0) {
            return "ok";
        } else {
            return "error";
        }
    }
}

修改完我们重启一下项目,打开postman请求一下这个接口

新增一篇文章

然后数据库也会新增一条字段

新增成功的数据

查询列表 @GetMapping

我们修改ArticleController,新增一个方法getArticles用来查询列表,并且返回列表

// 省略之前的代码

@GetMapping("/articles")
public Object getArticles() {
    String sql = "select * from article";
    return jdbcTemplate.queryForList(sql);
}

列表

删除数据 @DeleteMapping

@DeleteMapping("/articles")
public String deleteArticle() {
    String sql = "delete from article where id = 1";
    int num = jdbcTemplate.update(sql);
    if (num > 0) {
        return "ok";
    } else {
        return "error";
    }
}

总结

@GetMapping // 获取数据,get请求
@PostMapping // 新增数据,post请求
@DeleteMapping // 删除数据,delete请求
本篇主要学习,如何链接数据库以及使用 jdbcTemplate来操作数据库,文中的数据都是写死在代码里面的,下篇学习,如何使用jdbcTemplate来动态的操作数据库,如何获取用户提交的数据,以及如何封装统一的接口返回给用户,