Gin 中使用 GORM 操作 mysql 資料庫
阿新 • • 發佈:2021-10-27
Gin 中使用 GORM 操作 mysql 資料庫
GORM 是 Golang 的一個 orm 框架。簡單說,ORM 就是通過例項物件的語法,完成關係型 資料庫的操作的技術,是"物件-關係對映"(Object/Relational Mapping) 的縮寫。使用 ORM 框架可以讓我們更方便的操作資料庫
GORM 官方支援的資料庫型別有: MySQL, PostgreSQL, SQlite, SQL Serve
官方文件:https://gorm.io/zh_CN/docs/index.html
MySQL
對db進行全域性封裝,公有變數,暴露 model/core.go
1//gorm初始化資料庫
package models //https://gorm.io/zh_CN/docs/connecting_to_the_database.html import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) //gorm初始化資料庫 //全域性使用,定義成共有的 var DB *gorm.DB var err error func init() { //dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local dsn := "gin:gin@tcp(111.229.91.20:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local" //全域性使用,定義成共有的 DB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil{ //連線失敗 fmt.Println(err) }else{ //成功 fmt.Println(DB) } }
表結構和結構體
2//定義 user 模型:
package models
//定義 user 模型:
type User struct {// 預設表名是 `users`
//首字母大寫,增加外部訪問
Id int
Username string
Age int
Email string
AddTime int
}
//表示把 User 結構體預設操作的表改為 user 表
func (User) TableName() string{
return "user"
}
在實際專案中定義資料庫模型注意以下幾點:
1、結構體的名稱必須首字母大寫 ,並和資料庫表名稱對應。例如:表名稱為 user 結構體
名稱定義成 User,表名稱為 article_cate 結構體名稱定義成 ArticleCate
2、結構體中的欄位名稱首字母必須大寫,並和資料庫表中的欄位一一對應。例如:下面結
構體中的 Id 和資料庫中的 id 對應,Username 和資料庫中的 username 對應,Age 和資料庫中
的 age 對應,Email 和資料庫中的 email 對應,AddTime 和資料庫中的 add_time 欄位對應
3、預設情況表名是結構體名稱的複數形式。如果我們的結構體名稱定義成 User,表示這個
模型預設操作的是 users 表。
4、我們可以使用結構體中的自定義方法 TableName 改變結構體的預設表名稱,如下:
func (User) TableName() string { return "user" }
表示把 User 結構體預設操作的表改為 user 表
gorm.Model
GORM 定義一個 gorm.Model 結構體,其包括欄位 ID、CreatedAt、UpdatedAt、DeletedAt