使用Spring Boot与MyBatis Plus快速构建应用

【Java 系列】使用 Spring Boot 与 MyBatis Plus 快速构建应用

引言

Spring Boot 和 MyBatis Plus 是当今 Java 开发领域中的主流框架。Spring Boot 简化了 Java 应用程序的开发流程,MyBatis Plus 则是 MyBatis 框架的增强版本,提供了更多便利的功能, 例如集成了很多初始增删改查的方法。本篇入门博客将引导你如何使用 Spring Boot 和 MyBatis Plus 构建高效的 Java 应用。

1. 什么是 Spring Boot?

Spring Boot 是 Spring 框架的一部分,它旨在简化 Spring 应用程序的初始化和开发过程。通过使用 Spring Boot,你可以通过少量的配置和约定来创建一个完全可运行的独立应用程序。它还提供了内嵌式 Web 服务器,使得部署和运行应用程序变得更加简单。

2. 什么是 MyBatis Plus?

MyBatis Plus 是基于 MyBatis 框架的增强工具包,它简化了 MyBatis 的使用,并提供了更多的功能。MyBatis Plus 自动实现了基本的 CRUD 操作,还提供了诸如分页查询、条件查询、自动填充、乐观锁等功能。使用 MyBatis Plus 可以大幅提高开发效率。

3. 环境搭建

在开始之前,确保你已经安装了以下环境:

  • JDK 8 或更高版本
  • Maven
  • IDE(推荐使用 IntelliJ IDEA)

4. 创建 Spring Boot 项目

使用 Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot 项目。在该页面选择所需的依赖,包括 Web 和 MyBatis Plus。

pom.xml 文件中的重要依赖

1
2
3
4
5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>

5. 配置 MyBatis Plus

application.yml 文件中,添加数据库连接信息和 MyBatis Plus 相关配置。例如:

1
2
3
4
5
6
7
8
9
10
11
12
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: root
mybatis-plus:
type-aliases-package: com.github.cuifuan.mp.domain
mapper-locations: classpath:/mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
mapper-default-scope: classpath*:mapper/*.xml

这里我们假设数据库为 MySQL,并创建了一个名为springboot的数据库。

6. 安装 MybatisX 插件

在 IDEA 中安装插件,用来生成实体、service 层以及 Mapper 等文件。

MybatisX 插件

使用 IDEA 连接 MySQL 数据库

image-20230809105701288

输入数据库地址以及账号密码,然后点击测试连接,成功后点击确定然后关闭弹窗

image-20230809105815234

测试连接成功后,点击确定

7. 生成实体类和 Mapper 接口

image-20230809135732446

点击生成填写如下

image-20230809140202449

选择 Mybatis Plus 的生成选项

image-20230809140303913

观察到生成的 Java 实体类,其中使用了 MyBatis 的注解来映射数据库字段和实体类属性。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.example.myapp.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@TableName(value = "user_info")
@Data
public class UserInfo implements Serializable {

@TableId(type = IdType.AUTO)
private Long id;
// 其他属性...
}

接着,创建 Mapper 接口,继承BaseMapper并指定泛型为对应的实体类:

1
2
3
4
5
6
7
8
9
/**
* @author bran
* @description 针对表【user_info】的数据库操作Mapper
* @createDate 2023-08-09 14:03:10
* @Entity com.github.cuifuan.mp.domain.UserInfo
*/
public interface UserInfoMapper extends BaseMapper<UserInfo> {

}

8. 查看 Service 和 新建 Controller

在 Service 层,可以定义业务逻辑并调用 Mapper 接口进行数据操作。在 Controller 层,处理 HTTP 请求并调用相应的 Service 方法。

1
2
3
4
5
6
7
8
9
/**
* desc: 用户信息的业务逻辑层
* date 2023/8/9 14:07
* @author cuifuan
**/
@Service
public class UserInfoService extends ServiceImpl<UserInfoMapper, UserInfo> {
// 编写业务逻辑的地方
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.example.myapp.controller;

import com.example.myapp.entity.User;
import com.example.myapp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {




// 其他API...
}
  • @RestController注解,相当于@ResponseBody@Controller, 通过此注解就不需要将 @ResponseBody 再次添加到所有的请求方法上。
  • @RequestMapping 注解在类上表示给此类增加一个父路径,所有此类的方法都要走到这个路径下面
  • @GetMapping 相当于简化 @RequestMapping(value = "{id}", method = RequestMethod.GET)

9. 测试和运行应用程序

现在,已经完成了基本的配置和代码编写。运行应用程序,访问 API 端点,测试 API 是否能正常工作。

mapper 包扫描配置在启动类

1
2
3
4
5
6
7
8
9
10
@EnableTransactionManagement
@SpringBootApplication
@MapperScan("com.github.cuifuan.mp.mapper")
public class SpringBootMybatisApplication {

public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisApplication.class, args);
}

}

重要的地方,@MapperScan("com.github.cuifuan.mp.mapper")

启动 Spring Boot 应用,访问 http://127.0.0.1:8080/users/2

image-20230809160706445

10. 总结

本篇博客介绍了如何使用 Spring Boot 和 MyBatis Plus 构建高效的 Java 应用。

通过简单的配置和少量的代码,你可以快速搭建一个功能完备的应用程序。

主要结构点在于:

  • 引入依赖
  • 配置文件
  • 生成统一 dao、mapper、service 文件

11. 数据库文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user_info
-- ----------------------------
DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
`id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`full_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`card_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`in_time` datetime DEFAULT NULL,
`is_member` bit(1) DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_username` (`username`),
KEY `idx_username_a` (`username`(10))
) ENGINE=InnoDB AUTO_INCREMENT=9156521 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

SET FOREIGN_KEY_CHECKS = 1;
INSERT INTO `springboot`.`user_info` (`id`, `username`, `full_name`, `address`, `card_no`, `email`, `sex`, `in_time`, `is_member`, `password`, `remark`)
VALUES (2, 'zhaofang', '鑫', '天津市荆门市南长宁路u座 520412', '131028200107122001', 'xiulan67@example.net', '男', NULL, NULL, 'qr4srM%hw_', '');

使用Spring Boot与MyBatis Plus快速构建应用
https://cuifuan.github.io/2023/03/01/back-end/plugins/mybatis-plus/
作者
cuifuan
发布于
2023年3月1日
许可协议