Go言語 ポートフォリオ

【GO言語入門】GORMを使ってMySQLを操作してみる【第2回】

こんにちは、洸です!今回は15分で学習するGo言語チュートリアルの第2回です。

【Go言語入門】外部パッケージを使って設定ファイルを読み込む【第1回】
おすすめ【Go言語入門】外部パッケージを使って設定ファイルを読み込む【第1回】

こんにちは、洸です!この度、1回15分でGo言語を学習できるチュートリアルを用意しました。第1回目はパッケージ管理ツールを導入して、外部パッケージを使って設定ファイルの読み込み行いたいと思います。Go言語では機能やオブジェクト毎にパッケージ化を行い、そのパッケージをインポートしてプログラムを記述します。

続きを見る

第2回目はGORMを使ってMySQLをCRUD操作(Create、Read、Update、Delete)をしていきたいと思います。
 
  
GORMとは、Go言語用のORMライブラリで、ORMとはObject Relational Mappingの略です。
 
 
Go言語の場合は、オブジェクト(構造体)をORMに渡してやることで、SQLを直接記述せずに、簡単に関係データベース(RDS)を操作することができます。
 
 
ここでは、データベースを簡単に扱えるツール程度の理解で大丈夫です。

パッケージインストール

それではやっていきましょう。まずは必要なパッケージのインストールを行います。今回はMySQLを使用するので、MySQLのドライバもインストールします。

ユーザテーブル

今回は、3つのカラムを持つusersテーブルを例に説明したいと思います。Go側で以下のような構造体Userを用意します。GORMは、Userを使ってDBとのやり取りを行います。

GORMオブジェクトの取得

※この記事では、MySQLのインストール方法は省略します。以下のような関数を定義し、戻り値としてGORMオブジェクト(コネクション)を返します。

dsnとは、Data Source Nameの略でデータベースの接続情報のことです。ユーザ、パスワード、データベース名は任意の値に書き換えてください。

 
また、第2引数の&gorm.Config{}は、GORMの設定オプションです。トランザクションやログなどのオプション設定が可能ですが、まずはデフォルトのままで問題ありません。

Create

まずは、データの作成処理です。順に解説していきます。

第1行:func (u *User) Create(tableName string) error {

Userのメソッドを定義しています。事前にu *Userに必要な情報をセットし、後にuをGORMに渡します。

第2行:db, err := getDB()

先ほど作成したgetDb関数を呼び出し、GORMオブジェクトを取得します。

第6行:sqlDb, err := db.DB()

GORMオブジェクトには接続をクローズするメソッドが存在しないので、sql.DBオブジェクトを取得し、後にコネクションのクローズを行います。

第10行:defer sqlDb.Close()

処理完了時に接続をクローズしています。

第12行:err = db.Table(tableName).Create(u).Error

Create操作です。Table()でテーブル名を指定し、Create()ではUserオブジェクトを渡すことで、データの作成を行います。また、最後に.Error()を付け加えることでエラーハンドリングをすることができます。

Read

続いてデータの読み込み処理です。

第1〜11行

Createと同様の処理を行っています。

第13行:result := []*User{}

DBから読み込んだ値がresultに保持されます。

第14行:err = db.Table(tableName).Select("user_id,user_name,password").Where("user_id = ?", u.UserId).Scan(&result).Error

Table()でテーブル名を指定、Select()で取得するカラム名を指定、Where()で条件を指定しています。また.Scan(&result)を付け加えることで、結果の値をゲットすることができます。また、Createと同じく.Errorでエラーハンドリングを行います。

Update

データの更新処理です。

処理の中身はほとんど同じで、Where()で更新対象の条件を指定し、Update()で更新カラムを指定してしています。

Delete

データの削除処理です。

main関数

最後に上記の4つ関数を一通り呼び出してみましょう。順番は以下の通りです。
Create→Read→Update→Read→Delete→Read

実行してみます。

うまく動作できました。(データ作成→ユーザ名更新→削除)

gorm

最後に

いかがだったでしょうか?今回のチュートリアルでは、DBの基本操作を実装してみました。
 
 
今回はMySQLを使用しましたが、PostgreSQLやSQLiteなんかもサポートされているので、興味のある方は試してみてください。
 
 
お疲れ様でした!Goでゲームを作成した記事はこちら

【第1回】Go言語でゲーム作成してみた
おすすめ【第1回】Go言語(ゲームエンジン:engo)でゲームを作成してみた

こんにちは!近年、多くのプログラミング言語の中で「稼げる言語」として人気が爆発しているのは、Googleが開発したGo言語です。本記事では、2Dゲームエンジンのengoを使用してゲームを作成していきます。プログラミング初心者の方でも分かりやすいように、ソースコードの説明もしっかり行いたいと思います。

続きを見る

-Go言語, ポートフォリオ
-,

© 2022 まいふぁんず