Column 属性定义
对于不同的数据库系统,数据类型其实是有些差异的。因此xorm中对数据类型有自己的定义,基本的原则是尽量兼容各种数据库的字段类型,具体的字段对应关系可以查看字段类型对应表。对于使用者,一般只要使用自己熟悉的数据库字段定义即可。
具体的 Tag 规则如下,另 Tag 中的关键字均不区分大小写,但字段名根据不同的数据库是区分大小写:
2.string类型默认映射为
varchar(255)
,如果需要不同的定义,可以在tag中自定义,如:4.实现了Conversion接口的类型或者结构体,将根据接口的转换方式在类型和数据库记录之间进行相互转换,这个接口的优先级是最高的。
下表为xorm类型和各个数据库类型的对应表:
xorm | mysql | sqlite3 | postgres | remark |
SMALLINT | SMALLINT | INTEGER | SMALLINT | |
MEDIUMINT | MEDIUMINT | INTEGER | INTEGER | |
INT | INT | INTEGER | INTEGER | |
INTEGER | INTEGER | INTEGER | INTEGER | |
BIGINT | BIGINT | INTEGER | BIGINT | |
CHAR | CHAR | TEXT | CHAR | |
VARCHAR | VARCHAR | TEXT | VARCHAR | |
TINYTEXT | TINYTEXT | TEXT | TEXT | |
TEXT | TEXT | TEXT | TEXT | |
MEDIUMTEXT | MEDIUMTEXT | TEXT | TEXT | |
LONGTEXT | LONGTEXT | TEXT | TEXT | |
BINARY | BINARY | BLOB | BYTEA | |
VARBINARY | VARBINARY | BLOB | BYTEA | |
DATE | DATE | NUMERIC | DATE | |
DATETIME | DATETIME | NUMERIC | TIMESTAMP | |
TIME | TIME | NUMERIC | TIME | |
TIMESTAMP | TIMESTAMP | NUMERIC | TIMESTAMP | |
TIMESTAMPZ | TEXT | TEXT | TIMESTAMP with zone | timestamp with zone info |
REAL | REAL | REAL | REAL | |
FLOAT | FLOAT | REAL | REAL | |
DOUBLE | DOUBLE | REAL | DOUBLE PRECISION | |
DECIMAL | DECIMAL | NUMERIC | DECIMAL | |
NUMERIC | NUMERIC | NUMERIC | NUMERIC | |
TINYBLOB | TINYBLOB | BLOB | BYTEA | |
BLOB | BLOB | BLOB | BYTEA | |
MEDIUMBLOB | MEDIUMBLOB | BLOB | BYTEA | |
LONGBLOB | LONGBLOB | BLOB | BYTEA | |
BYTEA | BLOB | BLOB | BYTEA | |
BOOL | TINYINT | INTEGER | BOOLEAN | |
SERIAL | INT | INTEGER | SERIAL | auto increment |
BIGSERIAL | BIGINT | INTEGER | BIGSERIAL | auto increment |