使用codegeex生成gorm模型需明确提示结构体名、字段、类型、gorm标签及时间戳等;支持自然语言描述、sql反向解析、模板批量生成,并须人工校验标签完整性、字段大小写与json兼容性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望使用CodeGeeX快速生成符合GORM规范的Go结构体模型(即GormModel定义),但不确定如何正确编写提示词或处理生成结果,则可能是由于提示语不够明确、未指定GORM标签规则或忽略了字段命名约束。以下是实现该目标的具体方法:
一、使用精准自然语言提示词调用CodeGeeX
CodeGeeX依赖高质量的上下文提示来生成符合预期的Go结构体。需在输入中明确说明包名、结构体名、字段名、数据类型、GORM标签(如gorm:"primaryKey"、gorm:"type:varchar(255)")以及是否启用GORM默认字段(如ID、CreatedAt等)。避免模糊表述如“做个用户表”,而应写成“生成一个User结构体,包含ID(主键)、Name(非空,最大长度100)、Email(唯一索引)、CreatedAt和UpdatedAt时间戳字段,使用GORM v2标签格式”。
1、打开CodeGeeX插件或Web界面,进入代码补全/生成模式。
2、在编辑器中输入注释行:// GORM Model: User, fields: ID(int64, primary key), Name(string, not null, size 100), Email(string, unique index), CreatedAt, UpdatedAt。
3、将光标置于注释下方,触发CodeGeeX自动补全,选择生成的Go结构体代码。
4、检查生成结果是否包含gorm.Model嵌入或手动声明的ID uint等字段,确认gorm:标签拼写正确且无多余空格。
二、基于已有数据库表反向生成GormModel
当项目已存在MySQL/PostgreSQL表时,可借助CodeGeeX解析建表SQL并输出对应Go结构体。此方法要求输入SQL语句具备完整字段定义与约束信息,CodeGeeX据此推断非空、索引、主键等GORM行为。
1、从数据库导出建表语句,例如:CREATE TABLE users (id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);。
2、在CodeGeeX输入框中粘贴该SQL,并追加指令:// Convert to GORM v2 Go struct with json and gorm tags。
3、等待生成结果,验证字段类型映射是否合理(如BIGINT→int64、DATETIME→time.Time)。
4、手动补充缺失的GORM标签,例如为email字段添加gorm:"uniqueIndex",为created_at添加gorm:"column:created_at"。
三、利用CodeGeeX+模板片段批量生成多模型
针对含多个关联表的业务场景,可通过预设模板降低重复提示成本。模板需包含通用字段占位符(如{{TableName}}、{{Fields}})及GORM共性配置(如软删除、时间戳),使CodeGeeX能稳定复用结构模式。
1、准备模板文本:// GORM Model Template: {{TableName}}\n// Fields: {{Fields}}\n// Embed gorm.Model, add json tags, use snake_case column names。
2、替换占位符为实际内容,例如将{{TableName}}替换为"Product",{{Fields}}替换为"Title(string, size 200), Price(float64), Status(uint8)"。
3、提交至CodeGeeX,获取结构体定义。
4、核对生成的json:标签是否与数据库列名一致(如json:"title"对应title列),必要时调整gorm:"column:title"。
四、修正CodeGeeX生成结果中的常见GORM问题
自动生成的模型常出现GORM标签遗漏、时间字段类型错误、JSON标签缺失等问题,需人工校验关键项。重点检查是否启用软删除(DeletedAt *time.Time `gorm:"index"`)、是否禁用默认时间戳(CreatedAt, UpdatedAt是否被显式声明)、是否为外键字段添加gorm:"foreignKey:UserID"等关联标签。
1、定位生成代码中所有time.Time字段,确认其GORM标签含autoCreateTime或autoUpdateTime(若需自动更新)。
2、查找所有字符串字段,检查是否添加gorm:"size:255"等长度限制,避免迁移时默认过长。
3、对含索引需求的字段(如status、category_id),补充gorm:"index"或gorm:"uniqueIndex"标签。
4、确保结构体字段首字母大写(导出),且json:标签值为小写蛇形(如json:"user_id"),与API序列化兼容。










