代
代码脚手架
作者:鹿Sir开发工具v1
从SQL建表语句自动生成微服务全套基础代码,包括Entity实体类、Mapper接口、Mapper XML、Convert转换器、ReadService读写分离的Service接口与实现。当用户提供SQL DDL语句、需要创建新领域代码脚手架、或需要为新表生成后端代码时触发。触发词:SQL生成代码、建表语句转代码、代码脚手架、生成Entity、生成Mapper、生成Service。
下载量
251
点赞
62
价格
免费
技能文档
---
name: code-scaffold
description: "从SQL建表语句自动生成微服务全套基础代码,包括Entity实体类、Mapper接口、Mapper XML、Convert转换器、ReadService读写分离的Service接口与实现。当用户提供SQL DDL语句、需要创建新领域代码脚手架、或需要为新表生成后端代码时触发。触发词:SQL生成代码、建表语句转代码、代码脚手架、生成Entity、生成Mapper、生成Service。"
category: 开发工具
---
# 代码脚手架 - SQL建表语句转微服务代码
从SQL `CREATE TABLE`语句自动生成微服务项目的全套基础代码。
## 输入
用户提供SQL `CREATE TABLE`语句。
## 变量推断
从项目配置和SQL推断以下变量:
| 变量 | 来源 | 示例 |
|------|------|------|
| `BASE_PACKAGE` | 项目base package | `com.example.project` |
| `DOMAIN_MODULE` | domain模块路径 | `project-domain` |
| `SERVICE_MODULE` | service模块路径 | `project-service` |
| `{TableName}` | SQL表名去前缀,转PascalCase | `t_user_info` → `UserInfo` |
| `{tableName}` | 类名首字母小写 | `userInfo` |
| `{table_name}` | SQL原始表名 | `t_user_info` |
## 生成文件清单
```
- [ ] 1. Entity实体类(domain模块)
- [ ] 2. Mapper接口(domain模块)
- [ ] 3. Mapper XML(domain模块resources)
- [ ] 4. Convert转换器(service模块)
- [ ] 5. ReadService接口(service模块)
- [ ] 6. ReadServiceImpl实现(service模块)
- [ ] 7. WriteService接口(service模块)
- [ ] 8. WriteServiceImpl实现(service模块)
- [ ] 9. 编译验证
```
## SQL类型映射
| SQL类型 | Java类型 |
|---------|---------|
| `bigint unsigned` | `Long` |
| `int` / `int unsigned` | `Integer` |
| `tinyint unsigned` | `Integer` |
| `varchar` | `String` |
| `text` | `String` |
| `datetime` | `java.util.Date` |
| `decimal` | `java.math.BigDecimal` |
## 关键规则
1. **Entity继承BaseModel**:所有Entity必须`extends BaseModel<Long>`,不重复声明id/isDeleted/createdBy/updatedBy/createdAt/updatedAt
2. **不需要@TableField**:MyBatis-Plus自动camelCase→snake_case映射
3. **构造函数注入**:禁止`@Autowired`/`@Resource`字段注入
4. **updateTime手动赋值**:Response的updateTime与Entity的updatedAt名称不同,需手动set
5. **写操作加事务**:`@Transactional(rollbackFor = Throwable.class)`
6. **查不到抛异常**:使用BusinessException
## 代码模板
### Entity
```java
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("{table_name}")
public class {TableName} extends BaseModel<Long> {
// 只声明业务字段,BaseModel字段不重复声明
// SQL列名snake_case自动映射为Java字段camelCase
}
```
### Mapper
```java
@Mapper
public interface {TableName}Mapper extends BaseMapper<{TableName}> {
}
```
### Convert
```java
@Mapper(componentModel = "spring",
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface {TableName}Convert {
{TableName} request2do(CreateRequest request);
@Mappings({
@Mapping(target = "isDeleted", ignore = true),
@Mapping(target = "createdAt", ignore = true),
@Mapping(target = "updatedAt", ignore = true)
})
{TableName} updateRequest2do(UpdateRequest request);
QueryListResponse do2QueryResponse({TableName} entity);
}
```
### ReadService
```java
public interface {Domain}ReadService {
List<QueryListResponse> list();
QueryDetailResponse queryById(QueryByIdRequest request);
}
```
### WriteService
```java
public interface {Domain}WriteService {
CreateResponse create(CreateRequest request);
void update(UpdateRequest request);
}
```
## 编译验证
生成完成后执行编译验证:
```bash
mvn compile -q
```
确认无编译错误。支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手