Spring Boot + MyBatis 实现 RESTful API 的完整流程

分享   2025-04-10 18:05   25   0  

以下是使用 Spring Boot 和 MyBatis 实现 RESTful API 的详细步骤:

1. 创建 Spring Boot 项目

使用 Spring Initializr 生成项目,选择以下依赖:

  • Spring Web(实现 RESTful API)

  • MyBatis Framework(集成 MyBatis)

  • MySQL Driver(数据库驱动)

  • Lombok(简化实体类代码,可选)

生成项目后,导入到 IDE 中。

2. 配置数据源和 MyBatis

在 application.properties 文件中配置数据库和 MyBatis:

properties# 数据库配置spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# MyBatis 配置mybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=com.example.model# 开启驼峰命名映射(数据库下划线 → Java 驼峰)mybatis.configuration.map-underscore-to-camel-case=true

3. 创建实体类

定义与数据库表对应的实体类:

java@Data // Lombok 自动生成 getter/setter@NoArgsConstructor@AllArgsConstructorpublic class User {    private Long id;    private String name;    private String email;}

4. 编写 Mapper 接口和 SQL

4.1 定义 Mapper 接口

java@Mapperpublic interface UserMapper {    List<User> findAll();    User findById(Long id);    int insert(User user);    int update(User user);    int delete(Long id);}

4.2 编写 SQL(XML 方式)

在 src/main/resources/mapper/UserMapper.xml 中:

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.mapper.UserMapper">    <select id="findAll" resultType="User">        SELECT * FROM user    </select>    <select id="findById" resultType="User">        SELECT * FROM user WHERE id = #{id}    </select>    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">        INSERT INTO user(name, email) VALUES(#{name}, #{email})    </insert>    <update id="update" parameterType="User">        UPDATE user SET name=#{name}, email=#{email} WHERE id=#{id}    </update>    <delete id="delete">        DELETE FROM user WHERE id=#{id}    </delete></mapper>

5. 实现 Service 层

java@Service@RequiredArgsConstructor // Lombok 自动注入依赖public class UserService {    private final UserMapper userMapper;    public List<User> findAll() {        return userMapper.findAll();    }    public User findById(Long id) {        return userMapper.findById(id);    }    public int create(User user) {        return userMapper.insert(user);    }    public int update(User user) {        return userMapper.update(user);    }    public int delete(Long id) {        return userMapper.delete(id);    }}

6. 实现 RESTful API 控制器

java@RestController@RequestMapping("/api/users")@RequiredArgsConstructorpublic class UserController {    private final UserService userService;    @GetMapping    public ResponseEntity<List<User>> findAll() {        return ResponseEntity.ok(userService.findAll());    }    @GetMapping("/{id}")    public ResponseEntity<User> findById(@PathVariable Long id) {        return userService.findById(id)                .map(ResponseEntity::ok)                .orElse(ResponseEntity.notFound().build());    }    @PostMapping    public ResponseEntity<User> create(@Valid @RequestBody User user) {        userService.create(user);        return ResponseEntity.status(HttpStatus.CREATED).body(user);    }    @PutMapping("/{id}")    public ResponseEntity<User> update(@PathVariable Long id, @Valid @RequestBody User user) {        user.setId(id);        userService.update(user);        return ResponseEntity.ok(user);    }    @DeleteMapping("/{id}")    public ResponseEntity<Void> delete(@PathVariable Long id) {        userService.delete(id);        return ResponseEntity.noContent().build();    }}

7. 异常处理

创建全局异常处理器:

java@ControllerAdvicepublic class GlobalExceptionHandler {    @ExceptionHandler(ResourceNotFoundException.class)    public ResponseEntity<?> handleResourceNotFound(ResourceNotFoundException ex) {        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());    }}

8. 测试 API

使用 Postman 或 curl 测试端点:

  • GET http://localhost:8080/api/users:获取所有用户

  • GET http://localhost:8080/api/users/1:获取 ID 为 1 的用户

  • POST http://localhost:8080/api/users:创建用户(请求体包含 JSON 数据)

  • PUT http://localhost:8080/api/users/1:更新用户

  • DELETE http://localhost:8080/api/users/1:删除用户

9. 高级配置(可选)

  • 数据校验:在实体类字段上添加 @NotNull@Email 等注解。

  • 分页查询:集成 PageHelper 插件。

  • 日志:在 application.properties 中配置 MyBatis SQL 日志。

  • 事务管理:在 Service 方法上添加 @Transactional

总结

通过以上步骤,您已实现了一个完整的 Spring Boot + MyBatis RESTful API,涵盖数据库操作、分层架构和异常处理。可根据实际需求扩展功能,如安全认证(JWT)、Swagger 文档等。


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。