Maison  >  Article  >  développement back-end  >  Présentation de golang gorm pour faire fonctionner mysql et l'utilisation de base de gorm

Présentation de golang gorm pour faire fonctionner mysql et l'utilisation de base de gorm

藏色散人
藏色散人avant
2021-05-17 16:45:133897parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer