Heim > Backend-Entwicklung > Golang > Einführung in Golang Gorm für den Betrieb von MySQL und die grundlegende Verwendung von Gorm

Einführung in Golang Gorm für den Betrieb von MySQL und die grundlegende Verwendung von Gorm

藏色散人
Freigeben: 2021-05-17 18:31:06
nach vorne
4061 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von golang wird Ihnen die grundlegende Verwendung von Golang Gorm zur Bedienung von MySQL und Gorm vorstellen. Ich hoffe, dass es Freunden, die es benötigen, hilfreich sein wird!

Die Bedienung von MySQL mit dem offiziellen Golang ist etwas umständlich, daher habe ich Gorm verwendet. Hier ist eine kurze Einführung in die Verwendung von Gorm Information

import (
 "github.com/jinzhu/gorm"
 _ "github.com/jinzhu/gorm/dialects/mysql"
)
Nach dem Login kopieren

Da grom die ORM-Zuordnung verwendet, müssen Sie in go eine Struktur definieren, die dem Tabellennamen entspricht sucht nach dem Strukturnamen, der dem Tabellennamen in der Datenbank entspricht. Standardmäßig werden die Großbuchstaben in Ihrer Struktur in Kleinbuchstaben umgewandelt und „s“ hinzugefügt, sodass Sie db.SingularTable(true) hinzufügen können, um grom Escape dem Strukturnamen, ohne s hinzuzufügen. Ich habe die Tabelle im Voraus in der Datenbank erstellt und sie dann mit grom abgefragt. Sie können die Tabelle auch mit gorm erstellen. Es ist meiner Meinung nach besser, die Tabelle direkt in der Datenbank zu erstellen . Grom wird nur zum Abfragen und Aktualisieren von Daten verwendet.

go get -u github.com/jinzhu/gormAngenommen, die Tabelle in der Datenbank wurde erstellt, lautet die folgende Anweisung zur Tabellenerstellung in der Datenbank:

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
}
Nach dem Login kopieren

Definieren Sie das Modell, dh die Struktur. Bei der Angabe der Struktur können wir nur die spezifischen Felder definieren, die wir benötigen zum Abrufen aus der Datenbank:

gorm ersetzt die Großbuchstaben von stuct (außer dem ersten Buchstaben) durch „_“, wenn es den Tabellennamen maskiert, sodass das folgende „XzAutoServerConf“ in den Tabellennamen entsprechend „xz_auto_server“ maskiert wird conf“ in der Datenbank, entsprechend Die Suche nach Feldnamen basiert zunächst auf dem Namen im Tag. Wenn kein Tag definiert ist, basiert die Suche auf den durch die Struktur definierten Feldern. Bei der Suche werden die Großbuchstaben verwendet im Strukturfeld wird mit Escapezeichen versehen, zum Beispiel wird nach „GroupZone“ in der Tabelle gesucht

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;
Nach dem Login kopieren
//定义struct
type XzAutoServerConf struct {
 GroupZone string `gorm:"column:group_zone"`
 ServerId int
 OpenTime string
 ServerName string
 Status int
}
Nach dem Login kopieren

Weitere Grom-Operationen finden Sie unter: https://jasperxu.github.io/ gorm-zh/


Werfen wir einen Blick auf die Verwendung von Golang GORM


gorm

gorm ist eine ORM-Bibliothek (Object-Relational Mapping), die den Datenbankzugriff in der Go-Sprache implementiert. Mit dieser Bibliothek können wir objektorientierte Methoden verwenden, um CRUD (Hinzufügen, Löschen, Ändern, Abfragen) für die Daten in der Datenbank bequemer durchzuführen. Grundlegende Verwendung

Abhängigkeiten herunterladen

//定义数据库连接
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)
}
Nach dem Login kopieren

Die erste ist die Kernbibliothek.

Das zweite ist das MySQL-Treiberpaket.

Mit Datenbank verbinden

go get github.com/jinzhu/gorm
go get github.com/go-sql-driver/mysql
Nach dem Login kopieren


Daten hinzufügen

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()
Nach dem Login kopieren

Daten löschen

type User struct {
 ID  int   `gorm:"primary_key"`
 Name string   `gorm:"not_null"`
}
func add() {
 user := &User{Name:"zhangsan"}
 db.Create(user)
}
Nach dem Login kopieren

Daten aktualisieren

user := &User{ID:1}
db.delete(user)
Nach dem Login kopieren

Daten abfragen

user := &User{ID:1}
db.Model(user).update("Name","lisi")
Nach dem Login kopieren

Andere

Bestimmen Sie, ob eine Struktur vorhanden ist in der Datenbank Die dem Körper entsprechende Tabelle:

// query all
var users []User
db.Find(&users)
fmt.Println(users)
// query one
user := new (User)
db.First(user,1)
fmt.Println(user)
Nach dem Login kopieren

Tabelle erstellen

db.HasTable(User{})
Nach dem Login kopieren
Das Obige ist die grundlegende Verwendung von Gorm.

Das obige ist der detaillierte Inhalt vonEinführung in Golang Gorm für den Betrieb von MySQL und die grundlegende Verwendung von Gorm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage