搭建SpringBoot和Mysql Demo

1. 引言

在上一篇文章中,介绍了如何搭建一个SpringBoot项目;本篇文章,在上一篇文章的基础上,接着介绍下怎样实现SpringBootMySQL的整合。在后端开发中,数据库开发是绕不开的话题,开发中很多的时间都是在和数据库打交道。比如APP传递的数据需要进行持久化,方便下一次来获取;存储设备运行日志,将设备的执行日志存放到数据库中,方便排查错误,开放接口方便用户进行自主查询。因此,接下来就来搭建一个SpringBootMySQL项目,并且在结尾的地方会指出新手会触犯的一些规范。

2. Demo搭建

2.1 环境介绍

  • 基本的SpringBoot项目,具体可以参考:如何搭建一个SpringBoot项目
  • Maven 进行项目构建和管理
  • JDK 8 以上
  • MySQL 数据库已安装

2.2 在pom.xml文件中填入依赖

<dependencies>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
</dependencies>

pom.xml文件中,添加了两个依赖分别是MybatisMysqlMybatis用户表与类实体之间的转换,Mysql用于连接数据库。

2.3 在 src/main/resource目录下的application.properties 添加以下配置

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
spring.datasource.Devicename=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

2.4 创建表和实体类,该类和数据库表中列进行对应

CREATE DATABASE mydatabase;
USE mydatabase;

CREATE TABLE `device` (
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(20) NOT NULL COMMENT '设备name' COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`id`) USING BTREE
);
public class Device {
    private Long id;
    private String name;

    // getters and setters
}

2.5 创建 Mybatis mapper接口,用于查询数据库设备信息

@Mapper
public interface DeviceMapper {
    @Select("SELECT * FROM device")
    List<Device> getAllDevices();
    
    @Insert("INSERT INTO device(name) VALUES(#{name})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void save(Device device);
}

2.6 创建一个Service层,并使用mapper来连接数据库

@Service
public class DeviceService {
    
    private final DeviceMapper deviceMapper;

    public UserService(DeviceMapper deviceMapper) {
        this.deviceMapper = deviceMapper;
    }

    public List<Device> findAll() {
        return deviceMapper.findAll();
    }

    public void save(Device device) {
        deviceMapper.save(device);
    }
}

2.7 开放接口操作数据库

@RestController
@RequestMapping("/devices")
public class DeviceController {
    private final DeviceService deviceService;

    public DeviceController(DeviceService deviceService) {
        this.deviceService = deviceService;
    }

    @GetMapping
    public List<Device> getAllDevices() {
        return deviceService.findAll();
    }
    
    @PostMapping
    public void save(@RequestBody Device device) {
        deviceService.save(device);
    }
}

2.8 在终端中启动项目

mvn spring-boot:run

项目启动成功后,可以使用PostMan对接口进行测试;使用Get,请求地址 /devices,可以获取所有的devices;采用POST时,可以在数据库中添加一个Device

3. 结尾

如上步骤,就可以整合SpringBootMyBatisMySQL。流程主要包括:

搭建SpringBoot和Mysql Demo_第1张图片

在整个流程中,有些规范:

  • controller层:这里暴露出接口路径,暴露入参,因此这里应该要简洁明了,业务逻辑切记不要写在这里,这样显得代码又臭又长,毫无逻辑,难于维护。
  • service层:这里才是业务逻辑主要实现的地方,具体的业务也需要划分,模块化,切记不要重复写一样的代码。
  • mapper层:持久层负责与数据库进行交互,存储和检索数据。一般使用MyBatis等持久化框架来实现这一层。

你可能感兴趣的:(Spring,mysql,spring,boot,mybatis)