use xorm.IMapper interface to implement. There are two IMapper implemented: SnakeMapper
and SameMapper
. SnakeMapper means struct name is word by word and table name or column name as 下划线. SameMapper means same name between struct and table.
SnakeMapper is the default.
engine.SetMapper(SameMapper{})
And you should notice:
engine.SetTableMapper(SameMapper{})
engine.SetColumnMapper(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 |