ホームページ  >  記事  >  バックエンド開発  >  Golang で ORM を使用する方法

Golang で ORM を使用する方法

PHPz
PHPzオリジナル
2023-04-11 09:10:43764ブラウズ

Golang は、その優れたパフォーマンスにより、ますます多くの開発者に好まれているコンパイル言語です。 Golang の開発により、Web 開発、システム ツール、データベースなど、ますます多くのアプリケーション シナリオがカバーされています。その中で、データベース操作も Golang 開発者の日常業務に不可欠な部分となっています。データベース操作では、ORM フレームワークを使用すると時間を大幅に節約し、開発効率を向上させることができます。では、ORM フレームワークを使用して Golang でデータベースを操作するにはどうすればよいでしょうか?確認してみましょう。

ORM (オブジェクト リレーショナル マッピング) とは、オブジェクトと関係を記述するメタデータを使用し、データベース操作を抽象化レイヤーにカプセル化することによって、リレーショナル データベース内のデータをオブジェクト指向データのセットに変換することを指します。プログラミング プロセス中に基礎となる SQL 操作を気にする必要がないため、データベース操作とプログラム実装の複雑さが簡素化されます。

現在、Golang で最も人気のある ORM フレームワークには、GORM、XORM、QBS などがあります。この記事では、GORMを例に、GolangでのORMフレームワークの使い方を詳しく紹介します。

1. GORM のインストール

GORM の使用を開始する前に、対応する依存関係パッケージをインストールする必要があります。 GORM を使用するためにインストールする必要がある依存関係パッケージは次のとおりです:

go get -u github.com/jinzhu/gorm
go get -u github.com/jinzhu/gorm/dialects/mysql

このうち 2 番目の依存関係パッケージは、MySQL データベースに接続するために使用されます。

2. データベースへの接続

GORM を使用して MySQL データベースを操作する前に、まず接続を確立する必要があります。 GORM では、次のコードを通じて MySQL データベースに接続できます:

import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

func main() {
    //连接MySQL数据库
    db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic("failed to connect database")
    }
    defer db.Close()
}

上記のコードでは、MySQL のユーザー名、パスワード、データベースが含まれる Open() 関数を通じて MySQL データベースに接続します。名前とその他の情報。パラメーターの最後に「&charset=utf8&parseTime=True&loc=Local」を追加すると、UTF-8 エンコーディングが使用され、時刻型解析がサポートされるようになります。

3. 構造の定義

ORM フレームワークを使用する場合、データベース内のテーブルとマッピングするためにデータベース テーブルの構造を定義する必要があります。以下は、ユーザー テーブル (ユーザー) を定義する構造の例です。

type User struct {
    gorm.Model
    Name string // 用户名
    Age  int    // 年龄
}

上記のコードを通じて、ユーザー テーブルのいくつかのフィールドが構造の属性にマップされます。このうち「gorm.Model」は、ID、CreatedAt、UpdatedAt、DeletedAtの4つのフィールドを実装するGORMが提供する構造体であり、これら4つの共通フィールドを各テーブルに簡単に追加できます。

4. データ テーブルの作成

テーブル構造を定義した後、対応するデータ テーブルも作成する必要があります。 GORM では、AutoMigrate() 関数を使用してデータ テーブルを自動的に作成できます。以下はサンプル コードです:

func main() {
    //连接MySQL数据库
    db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        panic("failed to connect database")
    }
    defer db.Close()

    //自动创建数据表
    db.AutoMigrate(&User{})
}

上記のコードでは、AutoMigrate() 関数を使用してユーザー テーブルを自動的に作成します。この関数は、テーブルが存在するかどうかを自動的に識別します。テーブルが存在しない場合は、新しいテーブルを作成します。存在する場合は省略されます。パスします。

5.操作データ

上記の作業が完了したら、データの操作を開始します。 GORM では、さまざまな CRUD (作成、読み取り、更新、削除) 操作を実装するために、多くの API 関数が提供されています。以下は、いくつかの一般的な操作のサンプル コードです。

  1. 新しいデータ
//新建一条用户数据
func CreateUser(u User) error {
    return db.Create(&u).Error
}

上記のコードでは、Create() 関数を使用して、新しいデータを作成する操作を実装します。ユーザーデータ。

  1. Query data
//查询指定ID的用户数据
func GetUserById(id uint) (User, error) {
    var user User
    return user, db.Where("id = ?", id).First(&user).Error
}

上記のコードでは、Where() 関数と First() 関数を使用して、指定された ID のユーザー データを取得します。

  1. データの更新
//更新指定ID的用户数据
func UpdateUser(id uint, name string, age int) error {
    result := db.Model(&User{}).Where("id = ?", id).Update(map[string]interface{}{"name": name, "age": age})
    if result.Error != nil {
        return result.Error
    }

    if result.RowsAffected == 0 {
        return errors.New("未找到符合条件的记录")
    }

    return nil
}

上記のコードでは、Model()、Where()、および Update() 関数を使用して、指定された ID のユーザー データを更新します。 。

  1. データの削除
//删除指定ID的用户数据
func DeleteUser(id uint) error {
    result := db.Delete(&User{}, id)
    if result.Error != nil {
        return result.Error
    }

    if result.RowsAffected == 0 {
        return errors.New("未找到符合条件的记录")
    }

    return nil
}

上記のコードでは、Delete() 関数を使用して、指定された ID のユーザー データを削除します。

6. 概要

ORM フレームワークを使用すると、複雑なデータベース操作とプログラム実装が大幅に簡素化され、開発時間が節約され、開発効率が向上します。 Golang では、GORM フレームワークを使用すると、MySQL データベースをより便利に操作できます。もちろん、GORM は多くの高度な操作も提供しますが、ここでは説明しません。この記事がお役に立てば幸いです。

以上がGolang で ORM を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。