gorm封装并测试,连接数据库、迁移创建表、调用模型方法等

1.下载依赖

// 下载依赖
go get -u gorm.io/gorm
// 下载mysql 驱动
go get -u gorm.io/driver/mysql

2.在common目录下新建config.go数据库配置文件

package common

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// db 基本配置
var (
	localhost = "127.0.0.1"
	port      = 3306
	dbname    = "goweb"
	username  = "goweb"
	password  = "123456"
)

// DB 全局变量,当需要数据库时可以直接调用
var DB *gorm.DB

// DBD 全局debug变量,在开发时使用DBD能够快速查看sql语句
var DBD *gorm.DB

// init初始化数据库连接与配置,当调用其他方法或变量时,会自动执行init函数
func init() {
	// fmt.Sprintf 内置格式字符串
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", username, password, localhost, port, dbname)
	// 连接数据库,mysql.Config 后面是一些高级配置参数,可以根据需要进行修改
	db, err := gorm.Open(mysql.New(mysql.Config{
		DriverName:                    "",
		ServerVersion:                 "",
		DSN:                           dsn, // 连接数据库信息
		DSNConfig:                     nil,
		Conn:                          nil,
		SkipInitializeWithVersion:     false,
		DefaultStringSize:             0,
		DefaultDatetimePrecision:      nil,
		DisableWithReturning:          false,
		DisableDatetimePrecision:      false,
		DontSupportRenameIndex:        false,
		DontSupportRenameColumn:       false,
		DontSupportForShareClause:     false,
		DontSupportNullAsDefaultValue: false,
		DontSupportRenameColumnUnique: false,
	}), &gorm.Config{ //&gorm.Config 后面的参数是相关配置,可以根据开发进行修改
		SkipDefaultTransaction:                   false,
		NamingStrategy:                           nil,
		FullSaveAssociations:                     false,
		Logger:                                   nil,
		NowFunc:                                  nil,
		DryRun:                                   false,
		PrepareStmt:                              false,
		DisableAutomaticPing:                     false,
		DisableForeignKeyConstraintWhenMigrating: false,
		IgnoreRelationshipsWhenMigrating:         false,
		DisableNestedTransaction:                 false,
		AllowGlobalUpdate:                        false,
		QueryFields:                              false,
		CreateBatchSize:                          0,
		TranslateError:                           false,
		ClauseBuilders:                           nil,
		ConnPool:                                 nil,
		Dialector:                                nil,
		Plugins:                                  nil,
	})
	// 判断连接情况
	if err != nil {
		fmt.Println("----------数据库连接失败--------------")
		//panic 抛出异常,并终止程序
		panic(err)
	}
	fmt.Println("----------数据库连接成功--------------")
	// 分别赋值给你全局变量DB 和DBD
	DB = db
	DBD = db.Debug()
}

3.新建model目录并创建modelBase.go和modelAdmin.go文件。modelBase.go用来配置公共基础模型,modelAdmin.go用来初始化admin表,可以在此文件中码操作admin数据表的方式,然后由逻辑模块调用,也就是操作admin模型的都应该放在这个文件里

//modelBase.go
package model

// BaseModel 定义常用模型结构体
type BaseModel struct {
	Id         int `gorm:"primaryKey;autoIncrement;not null" json:"id"`
	CreateTime int `gorm:"autoCreateTime"`
	UpdateTime int `gorm:"autoUpdateTime"`
	DeleteTime int `gorm:"autoUpdateTime"`
}
//modelAdmin.go
package model

import (
	"fmt"
	"goweb/common"
)

// Admin 初始化admin模型
type Admin struct {
	BaseModel
	UserName string `json:"username"`
	Password string
	Phone    string `json:"phone"`
}

// 自动迁移/创建数据表
func init() {
	err := common.DB.AutoMigrate(&Admin{})
	if err != nil {
		fmt.Println("----------admin表迁移失败--------------")
		//panic 抛出异常,并终止程序
		panic(err)
	}
}

func (Admin) Index(msg any) any {
	return msg
}

4.修改api/apiAdmin.go的中方法逻辑,调用adminmodel的测试方法

package admin

//apiAdminIndex
import (
	"github.com/gin-gonic/gin"
	"goweb/common"
	"goweb/model"
)

func Index(c *gin.Context) {
	var admin model.Admin
	msg := admin.Index("这里是admin-model 测试")
	common.ResOK(c, msg, 1)
}

5.启动服务器

gorm封装并测试,连接数据库、迁移创建表、调用模型方法等_第1张图片

 数据表也自动创建好了,自动在表名后面加了 s 

gorm封装并测试,连接数据库、迁移创建表、调用模型方法等_第2张图片

6.访问127.0.0.1:8080/admin

gorm封装并测试,连接数据库、迁移创建表、调用模型方法等_第3张图片

你可能感兴趣的:(golang,数据库,go,mysql)