分享生成go的mysql orm工具

安装工具

go install github.com/go-home-admin/toolset

创建数据库结构

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email_verified_at` timestamp NULL DEFAULT NULL,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`) USING HASH
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

创建配置文件

# 所有数据库连接
connections:
  mysql:
    driver: mysql
    host: env("DB_HOST", "127.0.0.1")
    port: env("DB_PORT", "3306")
    database: env("DB_DATABASE", "home-mysql")
    username: env("DB_USERNAME", "root")
    password: env("DB_PASSWORD", "123456")
    # 生成orm辅助关系
    helper:
      admin_menu:
        - with: belongs_to
          table: admin_role_menu
          alias: AdminRoleMenu
          gorm: "foreignKey:id;references:menu_id"

执行命令生成代码

user@macOs path $ toolset make:orm -config=./config/database.yaml -out=your_path

使用生成的代码

func TestNewOrmUsers(t *testing.T) {
    // 读取一条数据
    user, has := NewOrmUsers().WhereId(1).First()
    fmt.Println(user, has)

    // 读取列表数据 select * from users where id > 1 and create_ed >= now() limit 16
    users := NewOrmUsers().WhereIdGt(1).WhereCreatedAtGte(database.Now()).Limit(15).Get()
    fmt.Println(users)
    // 结果的辅助函数
    ids := users.GetIdList()
    fmt.Println( NewOrmUsers().WhereIdIn(ids).Get() )
    fmt.Println(users.GetIdMap())
}

生成的demo 可以查看
github.com/go-home-admin/go-admin/...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 3

很牛逼啊,不过好像有专业生成Gorm的工具

1年前 评论
AB (楼主) 1年前

大佬,牛逼啊

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!