分享生成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 协议》,转载必须注明作者和本文链接
推荐文章: