企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、模型名和表名映射 1.模型名和表名的映射规则:除了开头的大写字母以外,遇到大写会增加 \_,原名称中的下划线保留。 * Article -> article * AuthUser -> auth_user * Auth\_User -> auth__user 两个下划线 * DB\_AuthUser -> d\_b\_\_auth\_user 2.自定义表名 ~~~ type User struct { Id int Name string } //自定义表名 func (u *User) TableName() string { return "auth_user" } ~~~ ## 二、设置参数:使用structtag 1.忽略字段structtag:`orm:"-"` 2.pk设置为主键,适用于自定义其他类型为主键 3.null:Name string`orm:"null"` 4.auto:自增长 ~~~ Id int `orm:"pk;auto"` ~~~ 5.index:索引 ~~~ Name string `orm:"index"` ~~~ 索引的作用:优化查询,相当于图书的目录 6.unique ~~~ Name string `orm:"unique"` ~~~ 7.column 重写数据库字段的别名 ~~~ Name string `orm:"column(user_name)"` ~~~ ~~~ type User struct { ID uint // 字段名是 `id` Name string // 字段名是 `name` Birthday time.Time // 字段名是 `birthday` CreatedAt time.Time // 字段名是 `created_at` Groupss int `orm:"column(groups_id)"`// 字段名是 `groups_id` } ~~~ 8.size:对string起作用 ~~~ Title string `orm:"size(60)"` ~~~ 9.digits / decimals 4 2 12.21 ~~~ Money float64 `orm:"digits(12);decimals(4)"` 总长度12,小数点后有4位小数 ~~~ 10.auto\_now / auto\_now\_add ~~~ // 时间 Created time.Time `orm:"auto_now_add;type(datetime)"` Updated time.Time `orm:"auto_now;type(datetime)"` // 日期 Created time.Time `orm:"auto_now_add;type(date)"` Updated time.Time `orm:"auto_now;type(date)"` ~~~ auto\_now 每次 model 保存时都会对时间自动更新 auto\_now\_add 第一次保存时才设置时间 11.type:日期还是时间 ~~~ Created time.Time `orm:"auto_now_add;type(date)"` Created time.Time `orm:"auto_now_add;type(datetime)"` ~~~ 12.default ~~~ Gender float64 `orm:"default(0)"` ~~~ 13.description 修改源码:cmd\_utils.go的 getColumnAddQuery()最后加:fi.description, ~~~ Name string `orm:"description(这是标签名称)"` ~~~