Spring Boot 开发接口指南
开发思路
写接口的本质是:Controller 接收请求 → Service 处理业务 → Mapper 操作数据库 ,三层各司其职。
1. Controller 层(接收请求)
@RestController
@RequestMapping ( "/api" )
public class UserController {
@Autowired
private UserService userService;
@GetMapping ( "/user/{id}" )
@PostMapping ( "/user" )
@PutMapping ( "/user" )
@DeleteMapping ( "/user/{id}" )
@PathVariable Long id
@RequestBody @Valid User user
@RequestParam String name
public Result < User > getUser ( @PathVariable Long id) {
User user = userService. getById ( id) ;
return Result . success ( user) ;
}
}
常用请求参数注解
注解 用途 示例 @PathVariable路径参数 /user/{id}@RequestBodyJSON请求体 POST JSON数据 @RequestParamURL参数 ?page=1&size=10@RequestHeader请求头 获取Header信息
2. Service 层(业务逻辑)
@Service
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 写法
@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 写法(更简洁)
@Mapper
public interface UserMapper extends BaseMapper < User > {
}
4. Entity 层(数据模型)
@Data
@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通用路由映射 @GetMappingGET请求 @PostMappingPOST请求 @PutMappingPUT请求 @DeleteMappingDELETE请求
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
@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
@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
@Mapper
public interface UserMapper extends BaseMapper < User > {
}
User.java
@Data
@TableName ( "sys_user" )
public class User {
@TableId ( type = IdType . AUTO )
private Long id;
private String name;
private String email;
}
统一响应封装
@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