ByteNoteByteNote

字节笔记本

2026年2月19日

gormt:MySQL 数据库转 Go 结构体工具

API中转
¥120

本文介绍 gormt,一个 MySQL 数据库转 Go 结构体的工具,支持 GORM v1/v2,可自动生成 CRUD 辅助函数。

gormt 简介

gormt 是由 xxjwxc 开发的开源工具,用于将 MySQL 数据库自动转换为 Go 结构体。它支持 GORM v1/v2,采用大驼峰命名规则,自动生成 JSON 标签。该项目在 GitHub 上拥有 2.4k stars 和 362 forks,采用 MIT 许可证。

核心定位:database to golang struct

核心功能

  • 自动从 MySQL 数据库生成 Go 结构体
  • 支持 GORM v1/v2
  • 大驼峰命名规则
  • JSON 标签支持
  • 支持 GUI 和命令行两种模式
  • 自动生成 CRUD 辅助函数
  • 支持外键关联导出

基本信息

安装方法

bash
go get -u -v github.com/xxjwxc/gormt@latest

使用方式

GUI 模式

bash
./gormt -g=true

命令行模式

bash
./gormt -g=false

配置示例

创建 config.yml

yaml
out_dir: "./model"
url_tag: json
db_tag: gorm
is_out_func: true
is_foreign_key: true
db_info:
  host: "127.0.0.1"
  port: 3306
  username: "root"
  password: "qwer"
  database: "oauth_db"
  type: 0  # 0: MySQL, 1: SQLite, 2: MSSQL

命令行参数

参数说明
-H, --host数据库地址
-d, --database数据库名
-u, --user用户名
-p, --password密码
--port端口号 (默认 3306)
-o, --outdir输出目录
-F, --fun导出函数
-f, --foreign导出外键关联
-g, --guiGUI 模式

生成示例

输入 SQL:

sql
CREATE TABLE `user_account_tbl` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account` varchar(64) NOT NULL,
  `password` varchar(64) NOT NULL,
  `account_type` int(11) NOT NULL COMMENT '帐号类型:0手机号,1邮件',
  `reg_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `account` (`account`)
)

输出 Go 结构体:

go
type UserAccountTbl struct {
    ID          int       `gorm:"primary_key"`
    Account     string    `gorm:"unique"`
    Password    string
    AccountType int       // 帐号类型:0手机号,1邮件
    RegTime     time.Time
}

高级功能

  • 分页查询:支持 model.Condition{} SQL 链式调用
  • 自定义类型映射:通过 self_type_define 配置
  • 列注释:支持 [@gorm default:'test'] 语法
  • 外键注释[@fk tableName.columnName]

构建命令

bash
make windows  # Windows 构建
make linux    # Linux 构建
make mac      # macOS 构建
# 或
go generate

相关链接

适用场景

  • 数据库模型自动生成
  • 减少重复编码工作
  • 保持代码与数据库同步
  • 快速搭建项目基础结构

总结

gormt 是一个实用的数据库转 Go 结构体工具,其优势包括:

  • 自动化:一键生成结构体
  • 支持 GORM:兼容 v1/v2
  • GUI 支持:图形界面操作
  • 功能丰富:支持外键、函数生成

对于使用 GORM 的 Go 开发者来说,这是一个提高生产力的好工具。

分享: