1. 引言
在上一篇文章中,介绍了如何搭建一个SpringBoot
项目;本篇文章,在上一篇文章的基础上,接着介绍下怎样实现SpringBoot
和MySQL
的整合。在后端开发中,数据库开发是绕不开的话题,开发中很多的时间都是在和数据库打交道。比如APP
传递的数据需要进行持久化,方便下一次来获取;存储设备运行日志,将设备的执行日志存放到数据库中,方便排查错误,开放接口方便用户进行自主查询。因此,接下来就来搭建一个SpringBoot
和MySQL
项目,并且在结尾的地方会指出新手会触犯的一些规范。
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
文件中,添加了两个依赖分别是Mybatis
和Mysql
。Mybatis
用户表与类实体之间的转换,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. 结尾
如上步骤,就可以整合SpringBoot
、MyBatis
、MySQL
。流程主要包括:
在整个流程中,有些规范:
-
controller
层:这里暴露出接口路径,暴露入参,因此这里应该要简洁明了,业务逻辑切记不要写在这里,这样显得代码又臭又长,毫无逻辑,难于维护。 -
service
层:这里才是业务逻辑主要实现的地方,具体的业务也需要划分,模块化,切记不要重复写一样的代码。 -
mapper
层:持久层负责与数据库进行交互,存储和检索数据。一般使用MyBatis
等持久化框架来实现这一层。
原文始发于微信公众号(CodeJames):搭建SpringBoot和Mysql Demo
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148249.html