Spring Boot 项目提示词系统开发提示词
本文最后更新于95 天前,其中的信息可能已经过时,如有错误请发送邮件到1225615596@qq.com
# Project Configuration & Architecture Rules (.cursorrules)

## 1. Project Context (项目基础信息)
- **Root Package**: `src/main/java/com/yourcompany/project`  <-- 🔴 【请修改为你实际的包名】
- **Build Tool**: Maven
- **Language**: Java 17+
- **Framework**: Spring Boot 3.x

## 2. Allowed Dependencies (依赖白名单 - 严格执行)
AI 在生成代码时,**仅允许**使用以下库,严禁引入未在 `pom.xml` 中声明的第三方依赖:

- **Core**: Spring Boot Starter Web
- **ORM**: MyBatis Plus
- **Utils**: Hutool (`cn.hutool.*`), Lombok
- **JSON**: Jackson (`com.fasterxml.jackson.*`) - Spring Boot 默认自带
- **Docs**: Knife4j / Swagger
- **Test**: JUnit 5, Mockito

## 3. Directory Structure (目录结构规范)
AI 生成代码时,**必须**严格遵守以下分层结构,并自动创建不存在的文件夹:

### 3.1 Controller Layer
- **Path**: `controller/`
- **Rules**: 
  - 必须使用 `@RestController`。
  - 返回值统一封装为 `Result<T>`。
  - 禁止包含业务逻辑。

### 3.2 Service Layer
- **Interface**: `service/` (命名 `I*Service` 或 `*Service`)
- **Impl**: `service/impl/` (命名 `*ServiceImpl`,必须加 `@Service`)
- **Rules**: 事务必须加 `@Transactional(rollbackFor = Exception.class)`。

### 3.3 Mapper Layer
- **Path**: `mapper/`
- **Rules**: 必须继承 `BaseMapper<Entity>`,必须加 `@Mapper`。

### 3.4 Model Layer
- **`model/entity/`**: 数据库实体 (使用 `@TableName`)。
- **`model/dto/`**: 接收参数 (禁止使用 Entity)。
- **`model/vo/`**: 返回前端 (禁止直接返回 Entity)。

### 3.5 Common Layer
- **`common/api/`**: 存放 `Result<T>`, `ErrorCode`,`BusinessException`,`GlobalExceptionHandler`。
- **`common/util/`**: 存放自定义工具类。

## 4. Coding Standards (编码规范)

### 4.1 Utilities Selection (工具类选择指南 - 防止乱引包)
当需要进行以下操作时,**必须**使用指定的库:
- **String/Collection Utils**: 优先使用 `hutool` (如 `StrUtil`, `CollUtil`) 或 Spring 自带的 (`StringUtils`)。
  - ❌ 禁止引入 `org.apache.commons.lang3.*` (除非 pom.xml 明确有)。
- **JSON Processing**: 必须使用 `Jackson` (`ObjectMapper`) 或 `Hutool-JSON`。
  - ❌ 禁止引入 `com.alibaba.fastjson` / `Gson`。
- **Date/Time**: 必须使用 Java 8 `LocalDateTime` 或 `Hutool-DateUtil`。
  - ❌ 禁止使用 `java.util.Date`。
- **Bean Copy**: 必须使用 `BeanUtil.copyProperties()` (Hutool) 或 `BeanUtils` (Spring)。

### 4.2 Annotations
- **Lombok**: 所有 POJO 必须使用 `@Data`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor`。
- **Logs**: 必须使用 `@Slf4j` (Lombok),禁止 `System.out`。

## 5. Negative Constraints (❌ 绝对禁止)
1. ❌ **禁止幻觉依赖**: 不要 import 项目中不存在的包(如 `Guava`, `Apache Commons`),除非你确定它们在 `pom.xml` 中。
2. ❌ **禁止** Controller 直接调用 Mapper。
3. ❌ **禁止** 返回 `Map<String, Object>`。
4. ❌ **禁止** 吞掉异常 (Empty catch block)。

### 5.2 Database & SQL Rules
- **Table Naming**: `snake_case` (e.g., `user_info`). 
  - Note: Avoid SQL reserved keywords like `order`, `user`, `group`.
- **Mandatory Fields**: Every table MUST have:
  - `id` (BIGINT, PK, Auto Increment)
  - `create_time` (DATETIME)
  - `update_time` (DATETIME)
  - `is_deleted` (TINYINT, Logic Delete)
- **Entity Mapping**: 
  - `is_deleted` field must use `@TableLogic`.
  - `create_time`/`update_time` should use `@TableField(fill = FieldFill.INSERT/UPDATE)`.

## 6. Initialization Prompt (初始化指令)
如果用户要求 "初始化项目",请生成:
1. `common/api/Result.java`
2. `common/exception/GlobalExceptionHandler.java` (使用 @RestControllerAdvice)
3. `config/Knife4jConfig.java`

## 7. Import Safety Check (导入安全检查)
Before generating any `import` statement:
1. Check if the library is listed in **Section 2**.
2. If the library involves `apache.commons`, `google.guava`, or `alibaba`, **verify** if it exists in the project context.
3. If unsure, use Standard Java Library or Spring Boot built-in utils.

## 8. 🏗️ Skeleton Generation Mode (骨架生成模式)
当用户指令包含 **"生成骨架"**, **"Scaffold"**, **"Structure Only"** 时,请严格遵守以下规则:

1.  **只创建文件和类结构**,不要编写具体业务逻辑。
2.  **Entity/DTO/VO**: 必须包含所有字段、Lombok 注解、Swagger 注解(这是数据契约,必须完整)。
3.  **Controller**:
    - 定义好所有 URL 方法 (@GetMapping, @PostMapping)。
    - 定义好入参 (@RequestBody) 和返回值 (Result<VO>)。
    - **方法体**: 直接返回 `return Result.success(null);` 或 `return null;`。
    - 不要调用 Service,或者仅保留 Service 的注入字段。
4.  **Service Interface**: 定义好方法签名。
5.  **Service Impl**: 创建类并实现接口,但方法体内留空或抛出 `throw new UnsupportedOperationException("Pending implementation");`。
6.  **Mapper**: 仅创建接口继承 BaseMapper,不写 XML。

**目标**: 快速建立文件系统和类之间的引用关系,确保编译通过,但无实际功能。

前期准备:
0-1:IDEA新建项目        ------>       手动导入依赖 Hutool 和 Swagger (Knife4j)

步骤:

1.@规则 请按照规则,初始化项目通用层(Common Layer)。 需要生成 Result<T>, ErrorCode, BusinessException,GlobalExceptionHandler。

2.我要开发 **学生管理 (Student)** 模块。 请拆解任务并列出文件清单。

3.根据上述需求,请为 MySQL 数据库生成建表 SQL 语句。
要求:
1. 表名:`student`
2. 包含通用字段:`id` (主键自增), `create_time`, `update_time`, `is_deleted` (逻辑删除)。
3. 字段要有详细的注释 (COMMENT)。
4. 不使用外键。

4.SQL 已就绪。请启用 **Scaffold Mode**。 为 SchoolClass 模块生成代码骨架。 要求: 1. Entity 必须与 SQL 对应。 2. Controller/Service 方法留空,不写逻辑。 3. 生成 add, update, list 接口的定义。

注:我想要做一个 学生管理 (Student)模块 ,需要哪些接口,直接给我接口名字即可

5.@StudentServiceImpl.java (引用文件) @StudentAddDTO.java @Student.java 现在实现 `addStudent` 方法的业务逻辑。 逻辑要求: 1. 检查学号 (studentNo) 是否已存在,如果存在抛出异常。 2. 使用 BeanUtil 将 DTO 转为 Entity。 3. 保存到数据库。

注:检查学号 (studentNo) 是否已存在,就是主键字段

6.@StudentController.java @StudentServiceImpl.java 请完善 Controller 中的 `add` 方法,调用 Service 并返回结果。

工具类:

我要计算入学日期和当前日期的天数差。请问 Hutool 里有现成的方法吗?如果有直接告诉我怎么用;如果没有,帮我在 common/util 下生成一个 DateCalcUtil

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇