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.启动服务器
数据表也自动创建好了,自动在表名后面加了 s
6.访问127.0.0.1:8080/admin