其他技巧

最后更新于:2022-04-02 02:47:17

[TOC] ### 名称映射规则 三种名称映射 `SnakMapper ` 支持struct为驼峰式命名,表结构为下划线命名之间的转换,这个是**默认**的Maper; `SameMapper` 支持结构体名称和对应的表名称以及结构体field名称与对应的表字段名称相同的命名; `GonicMapper` 和`SnakeMapper`很类似,但是对于特定词支持更好,比如ID会翻译成id而不是`i_d`。 表名称和字段名称的映射规则可单独设定 ``` engine.SetTableMapper(core.SameMapper{}) engine.SetColumnMapper(core.SnakeMapper{}) ``` ### 自动时间操作 ### `yyy-mm-dd H:i:s` 格式 操作 当数据库字段为 `datetime` 或者 `timestamp` 时 ``` type User struct { Id int64 Name string UpdatedAt time.Time `xorm:"updated"` //[created|updated|deleted] } var user User user.id = 1 engine.Get(&user) engine.Update(&user) ``` ### 时间戳格式操作 ``` type User struct { Id int64 Name string UpdatedAt int `xorm:"updated"` //time.Time->int 则为时间戳格式 } ``` ## 软删除 ``` type User struct { Id int64 Name string DeletedAt time.Time `xorm:"deleted"` } engine.Id(1).Delete(&user) //获取软删除的数据 engine.Id(1).Unscoped().Get(&user) //真实删除数据 engine.Id(1).Unscoped().Delete(&user) ``` ## find查询 ``` //映射到 非struct cfgId :=make([]string,0) err = Engine.Table(new(SYS_CONFIG)).Cols("CFG_ID").Find(&cfgId) //获取多个字段的 非struct cfgId :=make([][]string,0) err = Engine.Table(new(SYS_CONFIG)).Cols("CFG_ID","CFG_TYPE").Find(&cfgId) ```
';