Gorm 初体验

88 阅读2分钟

安装

    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)
    }
}

新建数据库

image.png

go run main.go
  • 如果没有报错那么数据库会新增一个users

  • image.png

  • 同时数据也会添加进去

  • image.png

到此简单初体验就完成了

源代码仓库 在此