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

相关推荐
大傻^2 小时前
LangChain4j Spring Boot Starter:自动配置与声明式 Bean 管理
java·人工智能·spring boot·spring·langchain4j
yhole2 小时前
springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)
spring boot·后端·spring
l软件定制开发工作室3 小时前
Spring开发系列教程(34)——打包Spring Boot应用
java·spring boot·后端·spring·springboot
李白的粉5 小时前
基于springboot的知识管理系统
java·spring boot·毕业设计·课程设计·知识管理系统·源代码
三水不滴5 小时前
Elasticsearch 实战系列(二):SpringBoot 集成 Elasticsearch,从 0 到 1 实现商品搜索系统
经验分享·spring boot·笔记·后端·elasticsearch·搜索引擎
QQ24391976 小时前
spring boot医院挂号就诊系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
Coder-coco6 小时前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统
张道宁6 小时前
基于Spring Boot与Docker的YOLOv8检测服务实战
spring boot·yolo·docker
学亮编程手记6 小时前
Mars-Admin 基于Spring Boot 3 + Vue 3 + UniApp的企业级管理系统
vue.js·spring boot·uni-app