Gin中記錄Gorm數據庫表生成-查詢使用
全局封裝common.DB
一、全局封裝初始化數據庫 common/databse.go
package common
import (
"fmt"
"gopkg.in/ini.v1"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"os"
"supplierQuerySystemAPICode/model"
)
//gorm初始化數據庫
//全局使用,定義成共有的
var DB *gorm.DB
var err error
func init() {
//讀取.ini里面的數據庫配置
config, err := ini.Load("./config/app.ini")
if err != nil {
//失敗
fmt.Printf("Fail to read file: %v", err)
os.Exit(1)
}
ip := config.Section("mysql").Key("ip").String()
port := config.Section("mysql").Key("port").String()
user := config.Section("mysql").Key("user").String()
password := config.Section("mysql").Key("password").String()
database := config.Section("mysql").Key("database").String()
fmt.Println("App Mode:", config.Section("mysql").Key("password").String())
fmt.Println("App Mode:", config.Section("redis").Key("ip").String())
//dsn := "gin:gin@tcp(***.***.91.**:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local"
dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local",
user,
password,
ip,
port,
database)
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
QueryFields: true, //打印sql
SkipDefaultTransaction: true, //禁用mysql事務
})
// DB.Debug()
if err != nil {
fmt.Println(err)
}
//自動創建數據表User
DB.AutoMigrate(&model.User{})
}
配置文件 config/app.ini
app_name = 成強
[mysql]
ip = ***.229.***.20
port = 3306
user = ***
password = gin
database = ***
[redis]
ip = 127.0.0.1
port = 6379
二、定義要生成的數據庫字段-結構體 :model/user.go
package model
import "gorm.io/gorm"
//通過遷移migrate生成的數據庫表 -字段 限制
type User struct {
gorm.Model
Name string `gorm:"type:varchar(20);not null"`
Telephone string `gorm:"varchar(11);not null;unique"`
Password string `gorm:"size:255;not null"`
}
四、遷移生成數據庫字段(寫在common/database.go)尾部
//自動創建數據表User
DB.AutoMigrate(&model.User{})
三、使用封裝好的common.DB進行查詢操作
var user model.User
common.DB.Where("telephone = ?", telephone).First(&user)
if user.ID != 0 {
return true
}
return false