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