GoLand无内置“一键生成表结构代码”功能,需依赖sqlc或GoGen等插件配合数据库连接手动触发生成;生成后不自动同步表变更,须重新执行。

GoLand 里没有内置的“一键生成表结构代码”功能
它不会像某些 ORM 工具(如 GORM 的 gorm-gen)或数据库客户端那样自动把 MySQL 表转成 Go struct。你看到的“快速生成”,其实是靠插件 + 手动触发 + 正确配置组合出来的,不是开箱即用的功能。
用 go-sqlbuilder 或 sqlc 插件配合数据库连接生成 struct
GoLand 本身不生成代码,但能调用外部工具并提供模板支持。最常用的是 sqlc(推荐)或 go-sqlbuilder 类工具,前提是已配置好数据库连接和 schema。
- 先在 GoLand 中配好 Database 工具窗口:File → Settings → Database → + → Data Source,填 host/port/user/dbname,测试连通
- 确保本地装了
sqlcCLI:go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest - 项目根目录放
sqlc.yaml,内容至少包含database和generators配置,比如指定engine: postgres或mysql - 右键 SQL 文件(如
query.sql)→ “Generate SQLC Code”,GoLand 会调用sqlc generate并输出 struct 和 query 方法
注意:如果表字段含 json、enum 或自定义类型,sqlc 默认生成 interface{} 或 string,需在 sqlc.yaml 里配 overrides 显式映射。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
手动建表后用插件 reverse-engineer(如 GoGen)补 struct
如果你已有表,又不想写 SQL 文件,可以用社区插件辅助反向生成。GoLand 官方不提供,但 GoGen(JetBrains 插件市场搜到)支持从 Database 工具窗口选表 → 右键 → “Generate Struct”。
- 安装插件后重启 GoLand,Database 窗口展开表 → 右键 → “Generate Go Struct”
- 它会读取列名、类型、NULL 约束,生成带
dbtag 的 struct,例如ID int64 `db:"id"` - 但不处理外键关联、索引、注释转
jsontag;字段名默认蛇形转驼峰(user_name→UserName),无法关闭 - 生成结果是纯 struct,没方法、没 validation、没 relation,后续得自己加
gorm.Model或sql.NullString等适配
别指望 GoLand 自动同步表变更
哪怕用了 sqlc 或 GoGen,只要数据库表结构变了(比如加字段、改类型),Go 代码不会自动更新——必须重新触发生成。很多人卡在这步,以为配一次就一劳永逸。
-
sqlc是基于 SQL 查询推导 struct,不是扫描表;新增字段若没出现在任何.sql文件里,就不会进生成结果 -
GoGen是快照式生成,运行一次就完事,不监听 DDL 变更 - 建议把生成步骤写进
Makefile或 pre-commit hook,比如make gen包含sqlc generate && go fmt ./ent
真正省时间的不是“第一次生成”,而是“改表后能快速重生成且不出错”。这依赖你是否提前约定好 SQL 文件组织方式、是否隔离了 DDL 和 query、以及有没有为 nullable 字段预留 sql.Null* 类型空间。

















