Ich werde über eine Funktion schreiben, die den gesamten gewünschten Inhalt aus der Datenbank entnimmt. Ich habe schon etwas in der Datenbank
Machen Sie die Variablen der Schnittstelle {} zu Argumenten von Funktionen mit festem Typ Einfache Bedienung von "Mysql" mit "Golang" x "Gorm" [Go + gin + gorm] Versuchen Sie, der Web-App eine Anmeldefunktion hinzuzufügen Von der MySQL-Verbindung in Gehe zu Datenzuordnung zur Struktur Oreore-Konfigurations-API mit Gin und GORM
install
import (
_ "github.com/go-sql-driver/mysql"//Dies muss von mir selbst hinzugefügt werden
"github.com/jinzhu/gorm"
)
//Wann nicht
//go get github.com/jinzhu/gorm
//go get github.com/go-sql-driver/mysql
Stellen Sie zunächst eine Verbindung zur Datenbank her
main.go
func openGormDB() *gorm.DB { // localhost
DBMS := "mysql"
USER := "user"//MySQL-Benutzername
PASS := "password"//Passwort
PROTOCOL := "tcp(localhost:3306)"
DBNAME := "sample"//Name der Datenbank
CONNECT := USER + ":" + PASS + "@" + PROTOCOL + "/" + DBNAME + "?charset=utf8&parseTime=True&loc=Local"
db, err := gorm.Open(DBMS, CONNECT)
if err != nil {
panic(err)
}
return db
}
Dies ist der Inhalt der Datenbank
main.go
type ShiromiyaChannelInfos struct {
//ID uint64
ChannelID string
ChannelName string
ViewCount uint `gorm:"type:int"`
SubscriberCount uint `gorm:"type:int"`
VideoCount uint `gorm:"type:int"`
CreatedAt time.Time
}
Funktion, die den Inhalt der Datenbank übernimmt Schreiben Sie für jede Tabelle
Funktion, die den Inhalt der Datenbank übernimmt
//Ich muss eine solche Funktion oft schreiben
func GetDBShiro() []ShiromiyaChannelInfos/*<=①*/ {
db := openGormDB()
var shiroInfo []ShiromiyaChannelInfos/*<=①*/
db.Find(&shiroInfo)/*<=①*/
db.Close()
return shiroInfo/*<=①*/
func GetDBHashi() []HashibaChannelInfos/*<=①*/ {
db := openGormDB()
var hashiInfo []HashibaChannelInfos/*<=①*/
db.Find(&hashiInfo)/*<=①*/
defer db.Close()
return hashiInfo/*<=①*/
}
Eine Funktion, die eine Verbindung zu einer Datenbank herstellt und den gesamten Inhalt der Zieltabelle abruft Nur der Ort, an dem es anders war als oben Der Rest ist fast der gleiche
Ich muss so etwas oft schreiben (Funktion, die den Inhalt der Datenbank übernimmt), also habe ich es zusammengefasst
main.go
//Dies ist das fertige Produkt
func AllGetDBChannelInfo(chInfo string) (interface{}, error) {
db := openGormDB()
defer db.Close()
switch chInfo {
case "ShiromiyaChannelInfos":
var channelInfo []entity.ShiromiyaChannelInfos
db.Find(&channelInfo)
return channelInfo, nil
case "HashibaChannelInfos":
var channelInfo []entity.HashibaChannelInfos
db.Find(&channelInfo)
return channelInfo, nil
case "ChannelInfos":
var videoInfo []entity.VideoInfos
db.Find(&videoInfo)
return videoInfo, nil
default:
return nil, errors.New("Das db_kein Name")
}
}
Problem: AllGetDB muss AllGetDB später beim Hinzufügen einer Funktion überschreiben
GetDB hat viele Funktionen mit vielen Duplikaten. Sie müssen die Funktion jedoch nicht überschreiben, sondern nur hinzufügen