package com.nirvana.demo.factory.module.sdm.controller; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.nirvana.demo.common.mybatis.base.PageData; import com.nirvana.demo.factory.module.sdm.entity.SdmProductPackageParam; import com.nirvana.demo.factory.module.sdm.service.ISdmProductPackageParamService; import com.nirvana.demo.common.core.Result; import java.time.LocalDate; import java.util.List; import java.util.Map; import java.util.Set; /** * <p> * 产品包装规格 前端控制器 * </p> * * @author gino * @since 2024-04-01 */ @RestController @RequestMapping("/sdm/product-package-param") @Tag(name = "产品包装规格", description = "产品包装规格接口") public class SdmProductPackageParamController { @Autowired ISdmProductPackageParamService sdmProductPackageParamService; /** * 新增 */ @PostMapping() public Result add(@RequestBody SdmProductPackageParam entity) { entity.setId(IdWorker.getId()); entity.setEntryDate(LocalDate.now()); sdmProductPackageParamService.save(entity); return new Result().ok("操作成功"); } /** * 修改 */ @PutMapping() public Result update(@RequestBody SdmProductPackageParam entity) { sdmProductPackageParamService.updateById(entity); return new Result().ok("操作成功"); } /** * 删除 */ @DeleteMapping("/{id}") public Result delete(@PathVariable("id") Long id){ sdmProductPackageParamService.removeById(id); return new Result().ok("操作成功"); } /** * 分页查询 */ @GetMapping("/page") public Result page(@RequestParam Map<String, Object> params) { PageData data = sdmProductPackageParamService.page(params); return new Result().ok(data); } /** * 查询所有 */ @GetMapping() public Result<List> list() { List list = sdmProductPackageParamService.list(); return new Result().ok(list); } /** * 根据ids查询产品包装类型 */ //@Inner @RequestMapping(value = {"/some"}) public Result<List> productPackageParams(@RequestParam(required = false) Set<Long> ids){ if (ids != null && ids.size() > 0) { return new Result().ok(sdmProductPackageParamService.productPackageParamSelectSome(ids)); } return new Result().error("parameters not valid"); } /** * 根据id查询 */ @GetMapping("/{id}") public Result getOne(@PathVariable("id") Long id){ return new Result().ok(sdmProductPackageParamService.getById(id)); } } 每一行代码加注释
时间: 2025-07-19 10:34:11 浏览: 7
<think>我们正在为一个产品包装规格的控制器添加注释。这个控制器提供了基本的CRUD操作,包括新增、修改、删除、分页查询、查询所有、根据ids批量查询和根据id查询单个记录。
注意:我们使用MyBatis Plus的IdWorker生成唯一ID,使用LocalDate记录当前日期。
我们将逐行添加注释,解释每个部分的作用。</think>### 产品包装规格控制器代码逐行注释
```java
package com.nirvana.demo.factory.module.sdm.controller; // 包路径声明
// 导入依赖库
import io.swagger.v3.oas.annotations.tags.Tag; // Swagger API文档标签注解
import org.springframework.beans.factory.annotation.Autowired; // Spring依赖注入注解
import org.springframework.web.bind.annotation.*; // Spring MVC控制器注解集合
import com.baomidou.mybatisplus.core.toolkit.IdWorker; // MyBatis-Plus的ID生成工具
import com.nirvana.demo.common.mybatis.base.PageData; // 分页数据封装类
import com.nirvana.demo.factory.module.sdm.entity.SdmProductPackageParam; // 产品包装规格实体类
import com.nirvana.demo.factory.module.sdm.service.ISdmProductPackageParamService; // 产品包装规格服务接口
import com.nirvana.demo.common.core.Result; // 统一响应结果封装类
import java.time.LocalDate; // Java 8日期处理类
import java.util.List; // 列表集合
import java.util.Map; // 键值对集合
import java.util.Set; // 不重复元素集合
/**
* 产品包装规格管理控制器
*/
@RestController // 声明为RESTful控制器
@RequestMapping("/sdm/product-package-param") // 基础请求路径映射
@Tag(name = "产品包装规格", description = "产品包装规格接口") // Swagger文档描述
public class SdmProductPackageParamController {
@Autowired // 自动注入服务实现
ISdmProductPackageParamService sdmProductPackageParamService;
/**
* 新增产品包装规格
*/
@PostMapping() // POST请求映射
public Result add(@RequestBody SdmProductPackageParam entity) { // 接收JSON格式请求体
entity.setId(IdWorker.getId()); // 使用MyBatis-Plus的雪花算法生成唯一ID
entity.setEntryDate(LocalDate.now()); // 设置当前日期为录入日期
sdmProductPackageParamService.save(entity); // 调用服务层保存方法
return new Result().ok("操作成功"); // 返回成功响应
}
/**
* 修改产品包装规格
*/
@PutMapping() // PUT请求映射
public Result update(@RequestBody SdmProductPackageParam entity) { // 接收JSON格式请求体
sdmProductPackageParamService.updateById(entity); // 根据ID更新记录
return new Result().ok("操作成功"); // 返回成功响应
}
/**
* 删除产品包装规格
*/
@DeleteMapping("/{id}") // DELETE请求映射,带路径参数
public Result delete(@PathVariable("id") Long id){ // 从路径获取ID参数
sdmProductPackageParamService.removeById(id); // 根据ID删除记录
return new Result().ok("操作成功"); // 返回成功响应
}
/**
* 分页查询产品包装规格
*/
@GetMapping("/page") // GET分页查询
public Result page(@RequestParam Map<String, Object> params) { // 接收查询参数
PageData data = sdmProductPackageParamService.page(params); // 调用分页查询服务
return new Result().ok(data); // 返回分页数据
}
/**
* 查询所有产品包装规格
*/
@GetMapping() // GET列表查询
public Result<List> list() { // 无参数查询
List list = sdmProductPackageParamService.list(); // 查询所有记录
return new Result().ok(list); // 返回列表数据
}
/**
* 根据ID集合批量查询产品包装规格
*/
@RequestMapping(value = {"/some"}) // 多端点映射
public Result<List> productPackageParams(@RequestParam(required = false) Set<Long> ids){ // 接收ID集合参数
if (ids != null && ids.size() > 0) { // 验证ID集合非空
return new Result().ok(sdmProductPackageParamService.productPackageParamSelectSome(ids)); // 批量查询
}
return new Result().error("parameters not valid"); // 参数无效错误
}
/**
* 根据ID查询单个产品包装规格
*/
@GetMapping("/{id}") // GET路径参数查询
public Result getOne(@PathVariable("id") Long id){ // 从路径获取ID
return new Result().ok(sdmProductPackageParamService.getById(id)); // 返回单条记录
}
}
```
### 关键代码详解:
1. **ID生成机制**:
```java
entity.setId(IdWorker.getId()); // 使用MyBatis-Plus的分布式ID生成器
```
- 基于雪花算法生成全局唯一ID
- 避免数据库自增ID的局限性
2. **日期处理**:
```java
entity.setEntryDate(LocalDate.now()); // 使用Java 8的日期API
```
- 仅记录日期(年月日)不包含时间
- 适用于只需日期信息的业务场景
3. **批量查询接口**:
```java
public Result<List> productPackageParams(@RequestParam Set<Long> ids)
```
- 使用`Set<Long>`确保ID唯一性
- `required = false`允许空参数
4. **服务层方法命名**:
```java
productPackageParamSelectSome(ids) // 自定义批量查询方法
```
- 区别于通用的`listByIds()`方法
- 可支持定制化查询逻辑
5. **响应封装**:
```java
return new Result().ok("操作成功"); // 统一响应格式
```
- 所有操作返回统一结构的Result对象
- 包含操作状态和业务数据
### 功能特点:
1. **简洁的CRUD实现**:
- 基于MyBatis-Plus实现标准增删改查
- 减少样板代码编写
2. **分布式ID支持**:
- 使用雪花算法替代数据库自增ID
- 适用于分布式系统环境
3. **批量操作优化**:
- 提供基于ID集合的批量查询接口
- 减少多次单条查询的网络开销
4. **日期精确管理**:
- 使用LocalDate精确管理日期字段
- 避免传统Date类型的时间冗余
阅读全文
相关推荐

















