• 名称映射规则

    名称映射规则

    名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射。由core.IMapper接口的实现者来管理,xorm内置了三种IMapper实现:core.SnakeMappercore.SameMappercore.GonicMapper

    • SnakeMapper 支持struct为驼峰式命名,表结构为下划线命名之间的转换,这个是默认的Maper;
    • SameMapper 支持结构体名称和对应的表名称以及结构体field名称与对应的表字段名称相同的命名;
    • GonicMapper 和SnakeMapper很类似,但是对于特定词支持更好,比如ID会翻译成id而不是i_d。

    当前SnakeMapper为默认值,如果需要改变时,在engine创建完成后使用

    1. engine.SetMapper(core.SameMapper{})

    同时需要注意的是:

    • 如果你使用了别的命名规则映射方案,也可以自己实现一个IMapper。
    • 表名称和字段名称的映射规则默认是相同的,当然也可以设置为不同,如:
    1. engine.SetTableMapper(core.SameMapper{})
    2. engine.SetColumnMapper(core.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, uint64BigInt
    float32Float
    float64Double
    complex64, complex128 json.Marshal / json.UnMarshal Varchar(64)
    []uint8Blob
    array, slice, map except []uint8 json.Marshal / json.UnMarshal Text
    bool1 or 0Bool
    stringVarchar(255)
    time.TimeDateTime
    cascade structprimary key field valueBigInt
    structjson.Marshal / json.UnMarshalText
    Others Text