主题
DO/VO/DTO/枚举 模板
占位符说明
| 占位符 | 说明 | 示例 |
|---|---|---|
{basePackage} | 项目基础包路径 | cn.szhn.poc.service |
{module} | 业务模块名称(小驼峰) | demostu, teacher |
{Xxx} | 业务实体名称(大驼峰) | DemoStu, Teacher |
{xxx} | 业务实体名称(小驼峰) | demoStu, teacher |
{业务名称} | 业务中文描述 | 学生, 教师 |
{XXX} | 业务实体名称(全大写) | DEMOSTU, TEACHER |
{table_name} | 数据表名(蛇形命名) | tb_b_demo_stu |
{作者名} | 代码作者 | 彭业庆 |
{yyyy-MM-dd} | 创建日期 | 2026-05-13 |
DO(数据对象)
java
package {basePackage}.domain.{module}.model;
import cn.com.digitalhainan.mybatis.model.KingBaseDO;
/**
* <p>{业务名称}数据对象</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tb_b_{table_name}")
public class {Xxx}DO extends KingBaseDO {
@TableId(type = IdType.ASSIGN_ID)
private String id;
private String name;
private Integer age;
private String status;
}关键规约
| 规约项 | 要求 |
|---|---|
| 基类继承 | Kingbase → KingBaseDO,非Kingbase → BaseDO,禁止自定义 BaseDO |
| 审计字段 | 基类已包含 creator/updator/createTime/updateTime/disable/version,DO 中禁止重复定义 |
| 注解 | @Data, @EqualsAndHashCode(callSuper = true), @TableName, @TableId(type = IdType.ASSIGN_ID) |
VO(View Object - 入参)
查询条件 VO(继承 BasePageQueryVO)
java
package {basePackage}.business.{module}.model.vo;
import cn.com.digitalhainan.common.common.vo.BasePageQueryVO;
/**
* <p>{业务名称}列表查询条件VO</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "{业务名称}列表查询条件")
public class {Xxx}QueryVO extends BasePageQueryVO {
@Schema(description = "{字段描述}")
private String name;
@Schema(description = "{字段描述}")
private Integer age;
@Schema(description = "{字段描述}")
private String status;
}入参 VO(新增/修改)
java
package {basePackage}.business.{module}.model.vo;
/**
* <p>{业务名称}信息VO</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
@Data
@Schema(description = "{业务名称}信息")
public class {Xxx}VO {
@Schema(description = "{业务名称}id")
private String id;
@NotBlank(message = "{字段描述}不能为空")
@Size(min = 1, max = 50, message = "{字段描述}长度必须在1-50之间")
@Schema(description = "{字段描述}", example = "示例值")
private String name;
@NotNull(message = "{字段描述}不能为空")
@Min(value = 1, message = "{字段描述}必须大于等于1")
@Max(value = 150, message = "{字段描述}必须小于等于150")
@Schema(description = "{字段描述}", example = "20")
private Integer age;
@NotBlank(message = "{字段描述}不能为空")
@Schema(description = "{字段描述}", example = "0")
private String status;
}关键规约
| 规约项 | 要求 |
|---|---|
| 分页查询 VO | 必须继承 BasePageQueryVO,基类已包含 pageNum/pageSize |
| 参数校验 | 使用 Jakarta Validation(@NotBlank, @NotNull, @Min, @Max, @Size) |
| 校验消息 | 每个校验注解必须有自定义 message |
| Swagger 注解 | 统一使用 Swagger v3 @Schema 注解 |
DTO(Data Transfer Object - 返参)
java
package {basePackage}.business.{module}.model.dto;
/**
* <p>{业务名称}分页列表响应DTO</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
@Data
@Schema(description = "{业务名称}分页列表响应")
public class {Xxx}PageDTO {
@Schema(description = "{业务名称}id")
private String id;
@Schema(description = "{字段描述}")
private String name;
@Schema(description = "{字段描述}")
private Integer age;
@Schema(description = "创建时间")
private Date createTime;
}关键规约
| 规约项 | 要求 |
|---|---|
| 返参统一 | Controller/Service/Manager 层返参统一使用 DTO |
| 无校验逻辑 | DTO 是纯数据传输对象,不包含校验注解 |
| 分页返回 | 必须使用 PaginationInfoResDTO<{Xxx}DTO> 包裹 |
枚举常量(按需生成)
当业务场景需要异常处理、日志记录或状态管理时,参考以下模板生成对应的枚举类。
业务异常码枚举
java
package {basePackage}.business.{module}.constants;
import cn.com.digitalhainan.common.core.exception.IBusinessExceptionCodeConfiguration;
/**
* <p>{业务名称}模块业务异常码枚举</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
@AllArgsConstructor
@NoArgsConstructor
public enum {Xxx}OfBusinessExceptionCodeEnum implements IBusinessExceptionCodeConfiguration {
{XXX}_NOT_FOUND("{业务名称}信息不存在"),
{XXX}_SAVE_FAILED("{业务名称}信息保存失败");
private String defaultMsg;
@Override
public String code() {
return this.name();
}
@Override
public String defaultMsg() {
return StringUtils.isEmpty(defaultMsg) ? code() : defaultMsg;
}
}日志码枚举
java
package {basePackage}.business.{module}.constants;
import cn.com.digitalhainan.log.constants.ILogCodeConfiguration;
import {basePackage}.constants.ProgramConstant;
/**
* <p>{业务名称}模块日志码枚举</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
public enum {Xxx}OfLogCodeEnum implements ILogCodeConfiguration {
{XXX}_QUERY_LOG,
{XXX}_ADD_LOG,
{XXX}_UPDATE_LOG,
{XXX}_DELETE_LOG,
{XXX}_ENABLE_LOG;
@Override
public String appCode() {
return ProgramConstant.APP_CODE;
}
@Override
public String code() {
return this.name();
}
}状态枚举
java
package {basePackage}.business.{module}.constants;
/**
* <p>{业务名称}状态枚举</p>
*
* @author {作者名}
* @since {yyyy-MM-dd}
*/
@Getter
@AllArgsConstructor
public enum {Xxx}StatusEnum {
ENABLE(1, "启用"),
DISABLE(2, "禁用");
private final int code;
private final String desc;
}枚举使用指南
| 枚举类型 | 实现接口 | Lombok 注解 | 关键方法 |
|---|---|---|---|
| 业务异常码 | IBusinessExceptionCodeConfiguration | @AllArgsConstructor, @NoArgsConstructor | code(), defaultMsg() |
| 日志码 | ILogCodeConfiguration | 无 | appCode(), code() |
| 状态枚举 | 无 | @Getter, @AllArgsConstructor | getCode(), getDesc() |
使用示例:
- 异常抛出:
throw BusinessException.error({Xxx}OfBusinessExceptionCodeEnum.{XXX}_NOT_FOUND) - 日志记录:
log.info("[{}] add, param: {}", {Xxx}OfLogCodeEnum.{XXX}_ADD_LOG.code(), vo) - 状态设置:
{xxx}DO.setStatus({Xxx}StatusEnum.ENABLE.getCode())
