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 |