La colonne tutorielle suivante de golang vous présentera l'utilisation de base de golang gorm pour faire fonctionner mysql et gorm. J'espère qu'elle sera utile aux amis dans le besoin !
La version officielle de golang est un peu gênante pour faire fonctionner MySQL, j'ai donc utilisé gorm Voici une brève introduction à l'utilisation de gorm
Télécharger gorm :
. go get -u github.com/jinzhu/gorm
Introduire gorm dans le projet :
import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" )
Définir les informations de connexion à la base de données
func DbConn(MyUser, Password, Host, Db string, Port int) *gorm.DB { connArgs := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", MyUser,Password, Host, Port, Db ) db, err := gorm.Open("mysql", connArgs) if err != nil { log.Fatal(err) } db.SingularTable(true) return db }
Puisque grom utilise le mappage ORM, vous devez définir le modèle de la table à exploité, ce qui est requis dans go Définir une structure. Le nom de la structure correspond au nom de la table dans la base de données. Notez que lorsque gorm recherche le nom de la structure correspondant au nom de la table dans la base de données, il convertira les lettres majuscules en. votre structure en minuscules et ajoutez "s" par défaut, vous pouvez donc ajouter db.SingularTable(true) pour laisser grom échapper au nom de la structure sans ajouter de s. J'ai créé la table dans la base de données à l'avance, puis j'ai utilisé grom pour l'interroger. Vous pouvez également utiliser gorm pour créer la table. Je pense qu'il est préférable de créer la table directement sur la base de données. Il est pratique de modifier les champs de la table. . Grom est uniquement utilisé pour interroger et mettre à jour les données.
En supposant que la table dans la base de données a été créée, voici l'instruction de création de table dans la base de données :
CREATE TABLE `xz_auto_server_conf` ( `id` int(11) NOT NULL AUTO_INCREMENT, `group_zone` varchar(32) NOT NULL COMMENT '大区例如:wanba,changan,aiweiyou,360', `server_id` int(11) DEFAULT '0' COMMENT '区服id', `server_name` varchar(255) NOT NULL COMMENT '区服名称', `open_time` varchar(64) DEFAULT NULL COMMENT '开服时间', `service` varchar(30) DEFAULT NULL COMMENT '环境,test测试服,formal混服,wb玩吧', `username` varchar(100) DEFAULT NULL COMMENT 'data管理员名称', `submit_date` datetime DEFAULT NULL COMMENT '记录提交时间', `status` tinyint(2) DEFAULT '0' COMMENT '状态,0未处理,1已处理,默认为0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Définir le modèle, c'est-à-dire struct Lors de la spécification de struct,. nous ne pouvons définir que ce dont nous avons besoin Champs spécifiques récupérés de la base de données :
gorm remplacera les lettres majuscules de stuct (sauf la première lettre) par "_" lors de l'échappement du nom de la table, donc ce qui suit "XzAutoServerConf" échappera au nom de table correspondant à "xz_auto_server conf" dans la base de données. Le nom du champ correspondant sera recherché en premier en fonction du nom dans la balise. S'il n'y a pas de balise définie, il sera recherché en fonction du champ. défini par la structure. Lors de la recherche, le champ struct sera recherché. Les majuscules de seront échappées à " ", par exemple "GroupZone" recherchera le champ group_zone dans la table
//定义struct type XzAutoServerConf struct { GroupZone string `gorm:"column:group_zone"` ServerId int OpenTime string ServerName string Status int }
//定义数据库连接 type ConnInfo struct { MyUser string Password string Host string Port int Db string } func main () { cn := ConnInfo{ "root", 123456", "127.0.0.1", 3306, "xd_data", } db := DbConn(cn.MyUser,cn.Password,cn.Host,cn.Db,cn.Port) defer db.Close() // 关闭数据库链接,defer会在函数结束时关闭数据库连接 var rows []api.XzAutoServerConf //select db.Where("status=?", 0).Select([]string{"group_zone", "server_id", "open_time", "server_name"}).Find(&rows) //update err := db.Model(&rows).Where("server_id=?", 80).Update("status", 1).Error if err !=nil { fmt.Println(err) } fmt.Println(rows) }
Pour plus de détails. opérations, veuillez vous référer à : https://jasperxu.github.io/gorm-zh/
Jetons un coup d'œil à l'utilisation de Golang GORM
gorm
gorm est la bibliothèque ORM (Object Relational Mapping) du langage go qui implémente l'accès aux bases de données dans . En utilisant cette bibliothèque, nous pouvons utiliser des méthodes orientées objet pour effectuer plus facilement CRUD (ajouter, supprimer, modifier, interroger) sur les données de la base de données.
Utilisation de base
Dépendances de téléchargement
go get github.com/jinzhu/gorm go get github.com/go-sql-driver/mysql
La première est la bibliothèque principale.
Le deuxième est le package de pilotes MySQL.
Se connecter à la base de données
packae main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "fmt" ) func main() { db, err := gorm.Open("mysql", "root:root@/test?charset=utf8&parseTime=True&loc=Local") if err != nil { fmt.Println(err) return }else { fmt.Println("connection succedssed") } defer db.Close()
Ajouter des données
type User struct { ID int `gorm:"primary_key"` Name string `gorm:"not_null"` } func add() { user := &User{Name:"zhangsan"} db.Create(user) }
Supprimer des données
user := &User{ID:1} db.delete(user)
Mettre à jour les données
user := &User{ID:1} db.Model(user).update("Name","lisi")
Requête des données
// query all var users []User db.Find(&users) fmt.Println(users) // query one user := new (User) db.First(user,1) fmt.Println(user)
Autres
Base de données des juges Existe-t-il une table correspondant à la structure :
db.HasTable(User{})
Créer une table
db.CreateTable(User{})
Ce qui précède est l'utilisation de base de gorm.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!