> 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"
}
~~~
- 基礎知識
- 開發環境
- 包名規則
- 包初始化 (init)
- 基礎數據類型
- 基礎類型轉換
- 格式化輸出
- go指針
- 流程控制語句
- 函數定義
- 匿名函數
- 數組和切片
- map集合
- 結構體
- Interface接口
- 日期處理
- 數學計算
- 正則表達式
- 協程 (并發處理)
- channel
- waitgroup
- mutex (鎖機制)
- websocket
- protobuf
- Redis
- 錯誤處理
- 打包程序
- NSQ消息隊列
- 單元測試
- beego
- 安裝入門
- Gin
- 快速入門
- 路由與控制器
- 處理請求參數
- 表單驗證
- 處理響應結果
- 渲染HTML模版
- 訪問靜態文件
- Gin中間件
- Cookie處理
- Session處理
- Gin上傳文件
- swagger
- pprof性能測試
- GORM
- 入門教程
- 模型定義
- 數據庫連接
- 插入數據
- 查詢數據
- 更新數據
- 刪除數據
- 事務處理
- 關聯查詢
- 屬于 (BELONG TO)
- 一對一 (Has One)
- 一對多 (Has Many)
- 多對多 (Many to Many)
- 預加載 (Preloading)
- 錯誤處理
- 第三方常用插件
- viper 讀取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷鍵