☰
【SpringBoot入门No.2】SpringBoot + MyBatis整合全流程(附 Apifox 接口测试全记录)
2026/10/22 17:47:10 网站建设 项目流程

一、 前言

SpringBoot 框架入门,整合 MyBatis完成对 MySQL 数据库的 CRUD(增删改查),并实现两个自定义查询。

二、 环境与依赖准备

类型选择maven、依赖项勾选Spring Web、MYSQL Driver

  • JDK: 17

  • Maven: 3.9.16

  • 数据库: MySQL 8.0.44

  • 测试工具: Apifox

  • 核心依赖 (pom.xml):

    <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webmvc</artifactId> </dependency> <!-- ✅ Boot 4.x 专用 MyBatis-Plus starter,不能混用 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot4-starter</artifactId> <version>3.5.16</version> </dependency> <!-- 分页插件,版本须与 starter 对应 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-jsqlparser</artifactId> <version>3.5.16</version> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webmvc-test</artifactId> <scope>test</scope> </dependency> </dependencies>

三、 数据库表设计

在 Navicat 中创建名为 L06的数据库,并建立字段

四、 核心代码实现 (四层架构)

文件目录结构如下

1. Domain (实体类)/User

package com.example.demo.domain; import java.util.Date; public class User { private Integer id; private String name; private Date birthday; private String sex; private Date createTime; //此处get和set方式省略,自行右键生成补充 }

2. Mapper (数据访问层)/UserMapper

package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.domain.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user ORDER BY name DESC") List<User> getAllUserSortByNameDesc(); List<User> selectUserList(); }

配合 XML (resources/mapper/UserMapper.xml):

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.mapper.UserMapper"> <!-- 自定义查询 --> <select id="selectUserList" resultType="com.example.demo.domain.User"> SELECT id, name, birthday, sex, create_time AS createTime FROM user </select> </mapper>

3. Service (业务逻辑层)

package com.example.demo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.demo.domain.User; import com.example.demo.mapper.UserMapper; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User getUserById(Integer id) { return userMapper.selectById(id); } @Override public List<User> getAllUsers() { return userMapper.selectList(null); } @Override public boolean addUser(User user) { return userMapper.insert(user) > 0; } @Override public boolean updateUser(User user) { return userMapper.updateById(user) > 0; } @Override public boolean deleteUser(Integer id) { return userMapper.deleteById(id) > 0; } @Override public List<User> getAllUserSortByNameDesc() { return userMapper.getAllUserSortByNameDesc(); } @Override public List<User> selectUserList() { return userMapper.selectUserList(); } }

4. Controller (控制层)

package com.example.demo.controller; import com.example.demo.domain.User; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/user") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUser(@PathVariable("id") Integer id) { return userService.getUserById(id); } @GetMapping("/list") public List<User> listUsers() { return userService.getAllUsers(); } @PostMapping public String addUser(@RequestBody User user) { return userService.addUser(user) ? "添加成功" : "添加失败"; } @PutMapping public String updateUser(@RequestBody User user) { return userService.updateUser(user) ? "更新成功" : "更新失败"; } @DeleteMapping("/{id}") public String deleteUser(@PathVariable("id") Integer id) { return userService.deleteUser(id) ? "删除成功" : "删除失败"; } @GetMapping("/sort") public List<User> sortUsers() { return userService.getAllUserSortByNameDesc(); } @GetMapping("/xmlList") public List<User> xmlUsers() { return userService.selectUserList(); } }

五、 Apifox 接口测试结果

1. GET 根据 ID 获取:GET http://localhost:8080/api/user

2. GET 获取列表:GET http://localhost:8080/api/user/list

3. POST 添加用户:POST http://localhost:8080/api/user

4. PUT 更新用户:PUT http://localhost:8080/api/user

5. DELETE 删除用户:DELETE http://localhost:8080/api/user/3

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询