java-crud-module
1
总安装量
1
周安装量
#49929
全站排名
安装命令
npx skills add https://github.com/jianyun8023/my-skills --skill java-crud-module
Agent 安装分布
amp
1
opencode
1
cursor
1
kimi-cli
1
codex
1
github-copilot
1
Skill 文档
CRUD 模åèææ¶
为 Spring Boot + MyBatis-Plus å屿¶æé¡¹ç®åå»ºå®æ´çä¸å¡æ¨¡åã
åç½®: éµå® java-architecture-guide ä¸çåå±ååã
模åå建 Checklist
ææ¤é¡ºåºåå»ºï¼æ¯æ¥ä¾èµå䏿¥ç产åºï¼
Step 1: Migration SQL â 建表ï¼å®ä¹æ°æ®æ¨¡å
Step 2: Entity â æ å°è¡¨ç»æå° Java ç±»
Step 3: Mapper â 空æ¥å£ï¼ç»§æ¿ BaseMapper
Step 4: DTOs â 请æ±/ååºå¯¹è±¡
Step 5: Converter â MapStruct Entity â DTO 转æ¢
Step 6: Service æ¥å£ â å®ä¹ä¸å¡æ¹æ³ç¾å
Step 7: Service å®ç° â å®ç°ä¸å¡é»è¾
Step 8: Facade â è·¨æå¡ç¼æãäºå¡ç®¡ç
Step 9: Controller â HTTP å
¥å£ãåæ°æ ¡éª
å®æåæ´æ° CHANGELOG.mdã
å½åè§è鿥
ä»¥èµæºå AlertPolicyï¼è¡¨å alert_policyï¼ä¸ºä¾ï¼
| æä»¶ | å½å | å è·¯å¾ |
|---|---|---|
| Migration | YYYYMMDDHHMMSS_create_alert_policy.sql |
migrations/{module}/scripts/ |
| Entity | AlertPolicy.java |
{service-module}/.../entity/ |
| Mapper | AlertPolicyMapper.java |
{service-module}/.../repository/ |
| Create DTO | PolicyCreateReq.java |
{service-module}/.../dto/policy/ |
| Update DTO | PolicyUpdateReq.java |
{service-module}/.../dto/policy/ |
| Card DTO | PolicyCard.java |
{service-module}/.../dto/policy/ |
| Detail DTO | PolicyDetail.java |
{service-module}/.../dto/policy/ |
| Converter | PolicyConverter.java |
{service-module}/.../converter/ |
| Service | PolicyService.java / PolicyServiceImpl.java |
{service-module}/.../service/ |
| Facade | PolicyFacade.java |
{web-module}/.../facade/ |
| Controller | PolicyController.java |
{web-module}/.../controller/ |
| API è·¯å¾ | /api/v1/policies |
â |
è§å:
- ç±»å PascalCaseï¼è¡¨å snake_caseï¼API è·¯å¾ kebab-case 夿°
- DTO å
ææ¨¡ååç®å½ç»ç»ï¼
dto/policy/,dto/task/ï¼ - Facade å Controller å¨ web 模åï¼å ¶ä½å¨ service 模å
å ¸åç®å½ç»æ
project/
âââ {service-module}/src/main/java/com/example/service/
â âââ entity/ # Step 2
â âââ repository/ # Step 3 (Mapper)
â âââ dto/
â â âââ {module}/ # Step 4
â âââ converter/ # Step 5
â âââ service/
â âââ impl/ # Step 6-7
âââ {web-module}/src/main/java/com/example/web/
â âââ facade/ # Step 8
â âââ controller/ # Step 9
âââ migrations/{module}/scripts/ # Step 1
åæ¥éª¤è¦ç¹
Step 1: Migration SQL
åè java-db-migration Skillãå¿
å¤åï¼id, deleted, create_time, update_timeã
Step 2: Entity
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("alert_policy")
public class AlertPolicy extends BizEntity {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("name")
private String name;
// æä¸¾å段
@TableField("status")
private PolicyStatusEnum status;
// JSON åæ®µ
@TableField(value = "config_json", typeHandler = JacksonTypeHandler.class)
private Map<String, Object> configJson;
// é»è¾å é¤
@TableLogic
private Boolean deleted;
}
Step 3: Mapper
@Mapper
public interface AlertPolicyMapper extends BaseMapper<AlertPolicy> {
// 空æ¥å£ - 䏿·»å 任使¹æ³
}
ç¦æ¢ Mapper XML èªå®ä¹ SQLï¼æææ¥è¯¢å¨ Service å±ç¨ LambdaQueryWrapper æå»ºã
Step 4-5: DTOs + Converter
åè java-dto-converter Skillã
Step 6-7: Service
// æ¥å£
public interface PolicyService {
AlertPolicy getById(Long id);
Long create(PolicyCreateReq req);
void update(Long id, PolicyUpdateReq req);
void delete(Long id);
PageResult<PolicyCard> getPage(int page, int size, String name);
}
// å®ç°
@Slf4j
@Service
@RequiredArgsConstructor
public class PolicyServiceImpl implements PolicyService {
private final AlertPolicyMapper policyMapper;
private final PolicyConverter converter;
@Override
public AlertPolicy getById(Long id) {
AlertPolicy entity = policyMapper.selectById(id);
if (entity == null) {
throw new BusinessException(ErrorCode.POLICY_NOT_FOUND, "çç¥ä¸åå¨: " + id);
}
return entity;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long create(PolicyCreateReq req) {
validateNameUnique(req.getName(), null);
AlertPolicy entity = converter.toEntity(req);
entity.setStatus(PolicyStatusEnum.DISABLED);
policyMapper.insert(entity);
return entity.getId();
}
}
Step 8: Facade
@Component
@Slf4j
@RequiredArgsConstructor
public class PolicyFacade {
private final PolicyService policyService;
private final TaskService taskService; // 坿³¨å
¥å¤ä¸ª Service
@Transactional(rollbackFor = Exception.class)
public Long create(PolicyCreateReq req) {
return policyService.create(req);
}
// 读æä½ï¼æ¥è¯¢ + 丰å¯å
³èæ°æ®
public PolicyDetail getDetail(Long id) {
PolicyDetail detail = policyService.getDetail(id);
// 丰å¯å
³èæ°æ®
enrichWithRelatedData(detail);
return detail;
}
}
Step 9: Controller
åè java-api-endpoint Skillã
宿忣æ¥
- 9 个æä»¶å ¨é¨å建
- åå±è°ç¨æ¹åæ£ç¡® (Controller â Facade â Service â Mapper)
- Service æ²¡ææ³¨å ¥å ¶ä» Service
- Mapper æ¯ç©ºæ¥å£
- æ Mapper XML èªå®ä¹ SQLï¼æ¥è¯¢åå¨ Service æå»ºï¼
- åæä½æ @Transactional(rollbackFor = Exception.class)
- DTO æ @Schema 注解
- Controller æ @Tag / @Operation 注解
- CHANGELOG.md å·²æ´æ°
宿´ä»£ç åè
详ç»ç 9 æä»¶å®æ´ä»£ç 示ä¾è§ reference.mdã