Je vais écrire sur une fonction qui prend tout le contenu souhaité de la base de données. J'ai déjà quelque chose dans la base de données
Faire de l'interface {} variables les arguments des fonctions de type fixe Fonctionnement simple de "Mysql" avec "Golang" x "Gorm" [Go + gin + gorm] Essayez d'ajouter une fonction de connexion à l'application Web De la connexion Mysql dans Aller à l'allocation des données à la structure API de configuration Oreore réalisée avec Gin et GORM
install
import (
_ "github.com/go-sql-driver/mysql"//Cela doit être ajouté par moi-même
"github.com/jinzhu/gorm"
)
//Quand non
//go get github.com/jinzhu/gorm
//go get github.com/go-sql-driver/mysql
Tout d'abord, connectez-vous à la base de données
main.go
func openGormDB() *gorm.DB { // localhost
DBMS := "mysql"
USER := "user"//nom d'utilisateur mysql
PASS := "password"//mot de passe
PROTOCOL := "tcp(localhost:3306)"
DBNAME := "sample"//Nom de la base de données
CONNECT := USER + ":" + PASS + "@" + PROTOCOL + "/" + DBNAME + "?charset=utf8&parseTime=True&loc=Local"
db, err := gorm.Open(DBMS, CONNECT)
if err != nil {
panic(err)
}
return db
}
Voici le contenu de la base de données
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
}
Fonction qui prend le contenu de la base de données Écrivez pour chaque table
Fonction qui prend le contenu de la base de données
//Je dois écrire une fonction comme celle-ci plusieurs fois
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/*<=①*/
}
Une fonction qui se connecte à une base de données et récupère tout le contenu de la table cible Seul l'endroit où c'était différent de ① ci-dessus Le reste est presque le même
Je dois écrire plusieurs fois quelque chose comme ce qui précède (fonction qui prend le contenu de la base de données), alors je l'ai résumé
main.go
//Ceci est le produit fini
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("Ce db_sans nom")
}
}
problème: AllGetDB doit remplacer AllGetDB ultérieurement lors de l'ajout d'une fonction
GetDB a de nombreuses fonctions avec de nombreux doublons. Mais vous n'avez pas besoin d'écraser la fonction, ajoutez-la simplement
Recommended Posts