CREATE SQL 在线生成Go结构体
| SQL 类型 | Go 类型 | 
|---|---|
| INT, INTEGER, SMALLINT, TINYINT | int, int32, int64(具体取决于数据库中整数的范围和你的应用需求) | 
| BIGINT | int64 | 
| FLOAT, REAL | float32 | 
| DOUBLE, DOUBLE PRECISION | float64 | 
| DECIMAL(p,s), NUMERIC(p,s) | database/sql包中的sql.NullFloat64(可空浮点型)、sql.NullInt64(可处理整数型的小数部分)等,或者使用自定义结构体结合sql.Scanner和driver.Valuer接口处理 | 
| CHAR(n), VARCHAR(n), TEXT | string、sql.NullString(可空字符串) | 
| DATE | time.Time | 
| DATETIME, TIMESTAMP | time.Time | 
| BOOLEAN | bool、sql.NullBool(可空布尔型) | 
扩展包
扩展类型需要手动引入:gorm.io/datatypes
试试看
CREATE TABLE `foo` (
    `id` BIGINT unsigned NOT NULL AUTO_INCREMENT COMMENT 'pk',
    `code` VARCHAR(191) NOT NULL COMMENT 'code',
    `properties` JSON COMMENT 'properties',
    `is_deleted` TINYINT unsigned NOT NULL DEFAULT 0 COMMENT '0 valid/1 deleted',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'create_time',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update_time',
    INDEX `idx_create_time` (`create_time`),
    UNIQUE `uniq_code` (`code`),
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='comments';