🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> ORM框架操作数据库都需要预先定义模型 [TOC] ## 创建测试表 ~~~ CREATE TABLE `food` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID,商品Id', `name` varchar(30) NOT NULL COMMENT '商品名', `price` decimal(10,2) unsigned NOT NULL COMMENT '商品价格', `type_id` int(10) unsigned NOT NULL COMMENT '商品类型Id', `createtime` int(10) NOT NULL DEFAULT 0 COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ~~~ ## 模型定义 > 默认是`大驼峰`转`下划线`命名格式 ~~~ type Food struct { Id int //表字段名为:id Name string //表字段名为:name Price float64 //表字段名为:price TypeId int //表字段名为:type_id //字段定义后面使用两个反引号``包裹起来的字符串部分叫做标签定义,这个是golang的基础语法,不同的库会定义不同的标签,有不同的含义 CreateTime int64 `gorm:"column:createtime"` //表字段名为:createtime } ~~~ ## gorm模型标签 > gorm标签语法:`gorm:"标签定义"`,多个标签定义使用`分号;`分隔 gorm常用标签如下: | 标签 | 说明 | 例子 | | --- | --- | --- | | column | 指定列名 | `gorm:"column:createtime"` | | PRIMARY_KEY | 指定主键 | `gorm:"column:id; PRIMARY_KEY"` | | - | 忽略字段 | `gorm:"-"` 可以忽略struct字段,被忽略的字段不参与gorm的读写操作 | ## 定义表名 ~~~ func (v Food) TableName() string { return "food" } ~~~