以下是使用 Spring Boot 和 MyBatis 实现 RESTful API 的详细步骤:
使用 Spring Initializr 生成项目,选择以下依赖:
Spring Web(实现 RESTful API)
MyBatis Framework(集成 MyBatis)
MySQL Driver(数据库驱动)
Lombok(简化实体类代码,可选)
生成项目后,导入到 IDE 中。
在 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
定义与数据库表对应的实体类:
java@Data // Lombok 自动生成 getter/setter@NoArgsConstructor@AllArgsConstructorpublic class User { private Long id; private String name; private String email;}
java@Mapperpublic interface UserMapper { List<User> findAll(); User findById(Long id); int insert(User user); int update(User user); int delete(Long id);}
在 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>
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); }}
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(); }}
创建全局异常处理器:
java@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity<?> handleResourceNotFound(ResourceNotFoundException ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); }}
使用 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
:删除用户
数据校验:在实体类字段上添加 @NotNull
, @Email
等注解。
分页查询:集成 PageHelper
插件。
日志:在 application.properties
中配置 MyBatis SQL 日志。
事务管理:在 Service 方法上添加 @Transactional
。
通过以上步骤,您已实现了一个完整的 Spring Boot + MyBatis RESTful API,涵盖数据库操作、分层架构和异常处理。可根据实际需求扩展功能,如安全认证(JWT)、Swagger 文档等。