ホームページ > バックエンド開発 > Golang > Beego の ORM - Xorm を使用してデータベース操作を容易にする

Beego の ORM - Xorm を使用してデータベース操作を容易にする

PHPz
リリース: 2023-06-22 13:16:35
オリジナル
6090 人が閲覧しました

Beego は、Web 開発を加速するための便利なツールとライブラリを多数提供するオープンソースの Go 言語 Web フレームワークです。その中でも、ORM (オブジェクト リレーショナル マッピング) ライブラリは、開発者がデータ操作をより簡単に実行できるようにする非常に重要なコンポーネントです。 Beego の Xorm は、非常にシンプルで効率的に使用できる ORM ベースのデータベース操作ライブラリです。この記事ではXormを使ってデータベースを操作する方法を紹介します。

1. Xorm の概要

Xorm は、Java の Hibernate や MyBatis に似た、Go 言語に基づく ORM ライブラリです。 MySQL、PostgreSQL、SQLite などを含む複数のリレーショナル データベースをサポートします。他の Go 言語 ORM ライブラリとは異なり、Xorm はリフレクション メカニズムを使用してオブジェクトとテーブル間の関係をマッピングするため、より柔軟で便利になります。

2. Xorm のインストール

Xorm を使用する前に、まず Xorm をインストールする必要があります。 Go のコマンド ライン ツールを使用して Xorm をインストールできます:

go get xorm.io/xorm
ログイン後にコピー

3. Xorm の設定

Beego で Xorm を使用するのは非常に簡単です。データベース タイプ、データベース アドレス、ユーザー名を指定するだけです。およびパスワードとその他の情報があれば十分です:

# 配置数据库类型
db_driver = mysql
# 配置数据库地址
db_address = root:password@/testdb?charset=utf8
# 配置数据库最大闲置连接数
db_max_idle_conn = 10
# 配置数据库最大连接数
db_max_open_conn = 100
ログイン後にコピー

4. データベースの操作

  1. 構造の定義

Xorm を使用して操作するための最初のステップデータベースは、構造内でデータベース テーブル構造を定義し、タグ タグを使用して構造とデータベース テーブルの間のマッピング関係を識別します。たとえば、次の構造を持つ user という名前のデータ テーブルがあります:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ログイン後にコピー

この場合、定義する構造は次のようになります:

type User struct {
    Id    int    `xorm:"pk autoincr"`
    Name  string `xorm:"varchar(255) notnull"`
    Email string `xorm:"varchar(255) notnull"`
    Age   int    `xorm:"int(11) notnull"`
}
ログイン後にコピー
  1. Create Engine

データベースを操作する前に、まず Xorm エンジンを作成する必要があります。このエンジンは Xorm とデータベース間のブリッジであり、挿入、クエリ、更新、削除などのさまざまなデータベース操作を実行するために使用されます。エンジンの作成方法は次のとおりです。

import (
    "xorm.io/xorm"
    "github.com/astaxie/beego"
)

var (
    engine *xorm.Engine
)

func init() {
    dbDriver := beego.AppConfig.String("db_driver")
    dbAddress := beego.AppConfig.String("db_address")
    engine, err = xorm.NewEngine(dbDriver, dbAddress)
    if err != nil {
        beego.Error(err)
    }

    // 配置连接池
    maxIdleConn := beego.AppConfig.DefaultInt("db_max_idle_conn", 10)
    maxOpenConn := beego.AppConfig.DefaultInt("db_max_open_conn", 100)
    engine.SetMaxIdleConns(maxIdleConn)
    engine.SetMaxOpenConns(maxOpenConn)
}
ログイン後にコピー
  1. データの挿入

Xorm を使用したデータの挿入は非常に簡単です。構造体オブジェクトを作成して値を割り当てるだけです。 engine .Insert() 関数を使用するだけで十分です。

func insertUser(user *User) error {
    _, err := engine.Insert(user)
    if err != nil {
        beego.Error(err)
        return err
    }
    return nil
}
ログイン後にコピー
  1. Query data

Xorm を使用してデータをクエリすることも非常に便利です。 engine.Where()engine.And() などの関数を使用してクエリ条件を指定できます。また、engine.OrderBy() を使用することもできます。並べ替え方法を指定します。クエリ結果は、Find()Get()Iterate() などの関数を使用して処理できます。 data

  1. Xorm を使用したデータの更新も非常に簡単で、構造体オブジェクトを作成して値を割り当て、
  2. engine.Id()

engine.Update を使用するだけです。 ()関数で十分です:

func getUserByName(name string) (*User, error) {
    user := &User{}
    _, err := engine.Where("name = ?", name).Get(user)
    if err != nil {
        beego.Error(err)
        return nil, err
    }
    return user, nil
}

func getAllUsers() ([]*User, error) {
    users := make([]*User, 0)
    err := engine.Find(&users)
    if err != nil {
        beego.Error(err)
        return nil, err
    }
    return users, nil
}
ログイン後にコピー
データの削除

  1. Xorm を使用してデータを削除することも簡単です。
  2. engine.Id()
関数と

engine.Delete() 関数を使用して、削除するデータを指定できます:

func updateUser(user *User) error {
    _, err := engine.Id(user.Id).Update(user)
    if err != nil {
        beego.Error(err)
        return err
    }
    return nil
}
ログイン後にコピー
5。 ##Xorm は、非常に便利で使いやすい Go 言語の ORM ライブラリです。リフレクション メカニズムを使用してオブジェクトとデータベース テーブル間の関係をマッピングするため、開発者は SQL ステートメントを手動で記述する必要がなく、データベース操作がより簡単かつ効率的になります。 Beego での Xorm の使用は非常に簡単で、データベース情報を設定し、上記のプロセスに従うだけです。

以上がBeego の ORM - Xorm を使用してデータベース操作を容易にするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート