Spring Boot 开发接口指南

Spring Boot 开发接口指南

开发思路

写接口的本质是:Controller 接收请求 → Service 处理业务 → Mapper 操作数据库,三层各司其职。


1. Controller 层(接收请求)

java 复制代码
@RestController           // = @Controller + @ResponseBody(返回JSON)
@RequestMapping("/api")  // 路由前缀
public class UserController {

    @Autowired           // 注入 Service
    private UserService userService;
    
    // 路由注解
    @GetMapping("/user/{id}")      // GET 请求(查询)
    @PostMapping("/user")           // POST 请求(创建)
    @PutMapping("/user")           // PUT 请求(更新)
    @DeleteMapping("/user/{id}")    // DELETE 请求(删除)
    
    // 参数注解
    @PathVariable Long id           // 路径参数 /user/1
    @RequestBody @Valid User user   // 请求体 + 参数校验
    @RequestParam String name       // URL查询参数 ?name=xxx
    
    public Result<User> getUser(@PathVariable Long id) {
        User user = userService.getById(id);
        return Result.success(user);
    }
}

常用请求参数注解

注解 用途 示例
@PathVariable 路径参数 /user/{id}
@RequestBody JSON请求体 POST JSON数据
@RequestParam URL参数 ?page=1&size=10
@RequestHeader 请求头 获取Header信息

2. Service 层(业务逻辑)

java 复制代码
@Service  // 标记为业务层组件,自动纳入IOC容器
public class UserService {
    
    @Autowired
    private UserMapper userMapper;
    
    public User getById(Long id) {
        // 业务逻辑处理
        return userMapper.findById(id);
    }
    
    public void addUser(User user) {
        // 参数校验、业务处理
        userMapper.insert(user);
    }
}

3. Mapper 层(数据访问)

MyBatis 写法

java 复制代码
@Mapper  // MyBatis 注解,自动生成Mapper实现
public interface UserMapper {
    
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);
    
    @Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")  // 自动生成主键
    void insert(User user);
    
    @Update("UPDATE user SET name = #{name} WHERE id = #{id}")
    void update(User user);
    
    @Delete("DELETE FROM user WHERE id = #{id}")
    void delete(Long id);
}

MyBatis-Plus 写法(更简洁)

java 复制代码
@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 继承 BaseMapper 后,CRUD 自动生成
    // selectById, insert, updateById, deleteById 等方法自带
}

4. Entity 层(数据模型)

java 复制代码
@Data                     // Lombok:自动生成getter/setter/toString
@NoArgsConstructor        // 无参构造
@AllArgsConstructor       // 全参构造
@TableName("sys_user")   // 指定表名(可选,不指定默认用类名)
public class User {
    
    @TableId(type = IdType.AUTO)  // 主键自增
    private Long id;
    
    private String name;
    
    private String email;
    
    @TableField(fill = FieldFill.INSERT)  // 自动填充
    private LocalDateTime createTime;
}

核心注解一览

Controller 层

注解 作用
@RestController 声明REST接口(返回JSON)
@Controller 声明控制器(返回视图)
@RequestMapping 通用路由映射
@GetMapping GET请求
@PostMapping POST请求
@PutMapping PUT请求
@DeleteMapping DELETE请求

Bean 声明

注解 作用 使用场景
@Component 通用组件 通用Bean
@Service 业务层 Service类
@Repository 数据层 Mapper/Dao类
@Controller 控制器 Controller类
@Configuration 配置类 配置类

依赖注入

注解 作用
@Autowired 按类型注入(Spring)
@Resource 按名称注入(JDK)
@Qualifier 指定具体Bean名称

数据层

注解 作用
@Mapper 声明MyBatis Mapper
@TableName 指定表名
@TableId 主键映射
@TableField 字段映射

Lombok 常用注解

注解 作用
@Data 生成getter/setter/toString/equals
@Getter 只生成getter
@Setter 只生成setter
@NoArgsConstructor 无参构造
@AllArgsConstructor 全参构造
@Builder 建造者模式

完整示例

UserController.java

java 复制代码
@RestController
@RequestMapping("/api/user")
public class UserController {
    
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public Result<User> getUser(@PathVariable Long id) {
        User user = userService.getById(id);
        return Result.success(user);
    }
    
    @PostMapping
    public Result<Void> addUser(@RequestBody @Valid User user) {
        userService.addUser(user);
        return Result.success();
    }
}

UserService.java

java 复制代码
@Service
public class UserService {
    
    @Autowired
    private UserMapper userMapper;
    
    public User getById(Long id) {
        return userMapper.selectById(id);
    }
    
    public void addUser(User user) {
        userMapper.insert(user);
    }
}

UserMapper.java

java 复制代码
@Mapper
public interface UserMapper extends BaseMapper<User> {
    // MyBatis-Plus 自动提供 CRUD 方法
}

User.java

java 复制代码
@Data
@TableName("sys_user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private String email;
}

统一响应封装

java 复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {
    private Integer code;    // 状态码
    private String message; // 提示信息
    private T data;         // 数据
    
    public static <T> Result<T> success(T data) {
        return new Result<>(200, "success", data);
    }
    
    public static <T> Result<T> success() {
        return new Result<>(200, "success", null);
    }
    
    public static <T> Result<T> error(String message) {
        return new Result<>(500, message, null);
    }
}

整理时间: 2026-03-18

相关推荐
凤山老林8 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
凤山老林12 小时前
Spring Boot 定时任务进阶:动态 Cron 与集群防重实战
java·spring boot·后端·定时任务·集群定时任务
凤山老林14 小时前
Spring Boot 配置管理实战:多环境隔离、加密与 Nacos 热更新避坑指南
java·spring boot·后端
凤山老林16 小时前
可观测性落地:Spring Boot 3.x + Actuator + Prometheus + Grafana 监控体系搭建
spring boot·grafana·prometheus
agent89717 小时前
实战升级|SpringBoot WebSocket实现多轮对话AI流式问答(上下文记忆+自动重连+会话隔离)
人工智能·spring boot·websocket
白仑色17 小时前
Spring Boot 从切面统一控制事务
java·spring boot·aop·spring事务
凤山老林19 小时前
Spring Boot 大文件处理实战:分片上传、断点续传与 OSS 集成
java·spring boot·后端·大文件上传·分片上传·断点续传
weixin_BYSJ19871 天前
springboot酒店管理系统--附源码27436
java·spring boot·python·随机森林·贪心算法·eclipse·django
砍材农夫2 天前
物联网实战|Spring Boot MQTT平台 |emqx broker实战
spring boot·spring·spring cloud·mybatis
西凉的悲伤2 天前
Spring Boot 中 Filter 过滤器详解
java·spring boot·后端·过滤器·filter