1. 程式人生 > 其它 >Gin 中使用 GORM 操作 mysql 資料庫

Gin 中使用 GORM 操作 mysql 資料庫

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

3// gorm.Model 的定義