mirror of
https://gitee.com/johng/gf
synced 2026-06-06 02:25:47 +08:00
`gdb`在第一次查询时会拉取一次`table`的`fields meta`信息,为后续orm的字段过滤和时间特性服务,`gen dao`时已经获得了`table`的所有`fields meta`,提供一个生成`table`的功能,允许客户自行决定是否生成,是否注入已知表结构缓存到指定`db`实例。 1. 能解决部分兼容`mysql`的二开数据库在获取`fields meta`时无法和`mysql`保持一致的问题。 2. 可以模拟表字段信息而不需要真实的数据库连接,对于已知的表结构,可以直接设置缓存,在无法连接数据库的情况下,仍然可以使用表字段信息,使用gdb构建sql时不需要受限于实际数据库即可使用`gdb.ToSQL()`方法。 4. 提升访问速度 生成的示例目录 <img width="389" height="670" alt="SCR-20251010-ntne" src="https://github.com/user-attachments/assets/ebb08e70-cce1-4b73-9128-6ff784e4df3b" /> 生成的示例代码 ```golang // ================================================================================= // This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. // ================================================================================= package table import ( "context" "github.com/gogf/gf/v2/database/gdb" ) // RolePermissions defines the fields of table "role_permissions" with their properties. // This map is used internally by GoFrame ORM to understand table structure. var RolePermissions = map[string]*gdb.TableField{ "role_id": { Index: 0, Name: "role_id", Type: "bigint unsigned", Null: false, Key: "PRI", Default: nil, Extra: "", Comment: "", }, "permission_id": { Index: 1, Name: "permission_id", Type: "bigint unsigned", Null: false, Key: "PRI", Default: nil, Extra: "", Comment: "", }, "created_at": { Index: 2, Name: "created_at", Type: "timestamp", Null: false, Key: "", Default: "CURRENT_TIMESTAMP", Extra: "DEFAULT_GENERATED", Comment: "", }, "updated_at": { Index: 3, Name: "updated_at", Type: "timestamp", Null: false, Key: "", Default: "CURRENT_TIMESTAMP", Extra: "DEFAULT_GENERATED on update CURRENT_TIMESTAMP", Comment: "", }, "deleted_at": { Index: 4, Name: "deleted_at", Type: "timestamp", Null: true, Key: "", Default: nil, Extra: "", Comment: "", }, } // SetRolePermissionsTableFields registers the table fields definition to the database instance. // db: database instance that implements gdb.DB interface. // schema: optional schema/namespace name, especially for databases that support schemas. func SetRolePermissionsTableFields(ctx context.Context, db gdb.DB, schema ...string) error { return db.GetCore().SetTableFields(ctx, "role_permissions", RolePermissions, schema...) } ```