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