安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
GORM DOC参考gorm 文档
代码示例
先定义model
package model
import "gorm.io/gorm"
type User struct {
gorm.Model
UserName string `gorm:"type:varchar(50);not null;unique;comment:'用户名'" json:"userName"` // 用户名
NickName string `gorm:"type:varchar(50);comment:'中文名'" json:"nickName"` // 昵称
Name string `gorm:"type:varchar(50);comment:'中文名'" json:"name"` // 中文名
Mail string `gorm:"type:varchar(100);comment:'邮箱'" json:"mail"` // 邮箱
JobNumber string `gorm:"type:varchar(20);comment:'工号'" json:"jobNumber"` // 工号
MobileNumber string `gorm:"type:varchar(15);not null;unique;comment:'手机号'" json:"mobileNumber"` // 手机号
Avatar string `gorm:"type:varchar(255);comment:'头像'" json:"avatar"` // 头像
PostalAddress string `gorm:"type:varchar(255);comment:'地址'" json:"postalAddress"` // 地址
Department string `gorm:"type:varchar(128);comment:'部门'" json:"department"` // 部门
Position string `gorm:"type:varchar(128);comment:'职位'" json:"position"` // 职位
Status uint `gorm:"type:tinyint(1);default:1;comment:'状态:1在职, 2离职'" json:"status"` // 状态
DepartmentId string `gorm:"type:varchar(100);not null;comment:'部门id'" json:"departmentId"` // 部门id
OpenId string `gorm:"type:varchar(100);not null;comment:'用户open_id'" json:"openId"` // 用户open_id
}
然后在mian.go 中使用
package main
import (
"fmt"
"github.com/go-admin/model"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DB *gorm.DB // 定义全局DB
//dsn 相关
// 用户名
username := "root"
// 密码
password := "111111"
// 数据库名
database := "sys_go_admin"
// 主机地址
host := "localhost"
// 端口
port := 3306
// 连接字符串参数
query := "parseTime=True&loc=Local&timeout=10000ms"
// 编码方式
charset := "utf8mb4"
// 字符集
collation := "utf8mb4_general_ci"
func InitDB() {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&collation=%s&%s",
username,
password,
host,
port,
database,
charset,
collation,
query,
)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
panic(fmt.Errorf("Init Mysql Error: %v", err))
}
// 开启mysql日志
db.Debug()
DB = db
// 自动迁移表结构
dbAutoMigrate()
}
// 自动迁移表结构
func dbAutoMigrate() {
_ = DB.AutoMigrate(
&model.User{},
)
}
func main() {
InItDB()
// 创建一条记录
err := common.DB.Create(&model.User{
UserName: "Nicholas Zhao Si",
NickName: "亚洲舞王",
Name: "尼古拉斯·赵四",
Mail: "xxx@163.com",
JobNumber: "5481230",
MobileNumber: "13129000000",
Avatar: "https://bkimg.cdn.bcebos.com/pic/8ad4b31c8701a18b87d62e146c65100828381f30501f?x-bce-process=image/watermark,image_d2F0ZXIvYmFpa2U5Mg==,g_7,xp_5,yp_5",
PostalAddress: "辽宁省开原市松山镇象牙山村001号",
Department: "董事长",
Position: "舞王",
Status: 1,
DepartmentId: "100001",
OpenId: "k95wxiangyashan1",
}).Error
if err != nil {
fmt.Printf("Create User Error: %s", err)
}
}
新建数据库
go run main.go
-
如果没有报错那么数据库会新增一个users 表
-
-
同时数据也会添加进去
-