Maison  >  Article  >  développement back-end  >  Comment implémenter orm dans Golang

Comment implémenter orm dans Golang

PHPz
PHPzoriginal
2023-04-11 09:14:07658parcourir

Avec le développement de la technologie Internet et l'expansion continue des scénarios d'application, les bases de données, en tant que noyau du stockage et de la transmission des informations, sont devenues un élément important de la mise en œuvre des applications dans diverses industries. La technologie ORM (Object Relational Mapping), en tant qu'excellente technologie de gestion d'applications de bases de données, a été largement utilisée dans divers domaines. Cet article se concentrera sur la mise en œuvre d'ORM dans Golang.

1. Qu'est-ce que ORM

La technologie ORM, c'est-à-dire le mappage relationnel d'objets, fait référence à la conversion des données de la base de données en objets qui peuvent être exploités par le code de logique métier sans que les développeurs aient besoin d'écrire eux-mêmes l'instruction SQL appropriée. L'avantage de la technologie ORM est qu'elle peut simplifier la charge de travail des développeurs, améliorer l'efficacité du développement de projets et éviter des problèmes courants tels que l'injection SQL.

2. Comment implémenter ORM dans golang

Ces dernières années, le langage golang est devenu de plus en plus populaire dans le développement web. Dans le même temps, Golang fournit également d'excellents frameworks ORM pour répondre à divers besoins d'applications.

  1. GORM

GORM est un framework ORM populaire dans Golang, fournissant des fonctions comprenant CRUD, des requêtes associées, des transactions, etc. Son avantage est qu'il prend en charge une variété de bases de données, notamment MySQL, PostgreSQL, SQLite, etc., et fournit également la fonction de migration automatique de bases de données.

Ce qui suit est un exemple de code simple pour utiliser GORM pour faire fonctionner une base de données MySQL :

import "gorm.io/gorm"
import "gorm.io/driver/mysql"
// 定义一个User对象
type User struct {
  gorm.Model
  Name string
  Age  uint
}

func main() {
  // 连接MySQL,并创建表
  dsn := "user:password@tcp(127.0.0.1:3306)/gorm_db?charset=utf8mb4&parseTime=True&loc=Local" // 数据库连接字符串
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  if err != nil {
    panic("failed to connect database")
  }

  // 迁移schema
  db.AutoMigrate(&User{})

  // 创建一个User对象
  user := User{Name: "Jack", Age: 18}

  // 添加记录
  db.Create(&user)
  
  // 查询记录
  var u User
  db.First(&u, "name = ?", "Jack")
  
  // 更新记录
  db.Model(&u).Update("Age", 20)
  
  // 删除记录
  db.Delete(&u)
}

Comme le montre le code ci-dessus, GORM fournit une méthode simple et facile à utiliser pour faire fonctionner la base de données, et fournit également des méthodes pour les requêtes associées complexes.

  1. XORM

XORM est également un excellent framework ORM en golang, et il n'y a pas beaucoup de différence avec GORM en termes de fonctions. Il prend en charge une variété de bases de données, notamment MySQL, PostgreSQL, SQLite, MSSQL, etc., et fonctionne également très bien en termes de performances.

Un exemple de code simple pour utiliser XORM pour faire fonctionner une base de données MySQL est le suivant :

import (
  _ "github.com/go-sql-driver/mysql"
  "github.com/go-xorm/xorm"
  "log"
)

// 定义一个User对象
type User struct {
  Id   int    `xorm:"pk autoincr"`
  Name string `xorm:"varchar(25)"`
  Age  int
}

func main() {
  // 连接MySQL,并创建表
  engine, err := xorm.NewEngine("mysql", "root:password@tcp(127.0.0.1:3306)/test_db?charset=utf8")
  if err != nil {
    log.Fatal(err)
  }

  // 迁移schema
  if err := engine.Sync2(new(User)); err != nil {
    log.Fatal(err)
  }

  // 创建一个User对象
  user := &User{Name: "Jack", Age: 18}

  // 添加记录
  if _, err := engine.Insert(user); err != nil {
    log.Fatal(err)
  }
  
  // 查询记录
  u := &User{}
  if has, err := engine.Where("name = ?", "Jack").Get(u); err != nil {
    log.Fatal(err)
  } else if !has {
    log.Fatal("Record not exists")
  }
  
  // 更新记录
  u.Age = 20
  if _, err := engine.Update(u); err != nil {
    log.Fatal(err)
  }
  
  // 删除记录
  if _, err := engine.Delete(u); err != nil {
    log.Fatal(err)
  }
}

Grâce au code ci-dessus, vous pouvez voir que XORM fournit également les opérations CRUD correspondantes, et l'utilisation est également très simple.

3. Résumé

Dans Golang, il existe différentes méthodes d'implémentation du framework ORM. Si le scénario d'application nécessite des performances élevées, XORM est un bon choix. Si vous devez prendre en charge plusieurs bases de données et souhaitez que le framework ORM ait une grande évolutivité, GORM est sans aucun doute un bon choix. Choisir un framework ORM adapté à vos scénarios d'application peut considérablement améliorer l'efficacité du développement du code métier et réduire les coûts de développement.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn