Use names.Mapper
interface to set the name mapping rule. There are three rules: SnakeMapper
, SameMapper
, and GonicMapper
.
SnakeMapper
inserts an _
(underscore) between each word (Capital Case) to get the table name or column name.SameMapper
uses the same name between the struct and table.GonicMapper
is basically the same as SnakeMapper, but doesn’t insert an underscore between commonly used acronyms. For example ID
is converted to id
in GonicMapper, but ID
is converted to i_d
in SnakeMapper.SnakeMapper is the default. You can change it use SetMapper
.
engine.SetMapper(names.SameMapper{})
And you should notice:
engine.SetTableMapper(names.SameMapper{})
engine.SetColumnMapper(names.SnakeMapper{})
When a struct auto mapping to a database’s table, the below table describes how they change to each other:
go type's kind | value method | xorm type |
implemented Conversion | Conversion.ToDB / Conversion.FromDB | Text |
int, int8, int16, int32, uint, uint8, uint16, uint32 | Int | |
int64, uint64 | BigInt | |
float32 | Float | |
float64 | Double | |
complex64, complex128 | json.Marshal / json.UnMarshal | Varchar(64) |
[]uint8 | Blob | |
array, slice, map except []uint8 | json.Marshal / json.UnMarshal | Text |
bool | 1 or 0 | Bool |
string | Varchar(255) | |
time.Time | DateTime | |
cascade struct | primary key field value | BigInt |
struct | json.Marshal / json.UnMarshal | Text |
Others | Text |