
【第13回】Go言語(Golang)入門~MySQL利用編~
2021.12.20
第13回~Go言語(Golang)入門~

(株)ライトコードの笹川(ささがわ)です!
今回は、前回に引き続き MySQL を使っていきます!
前回は、データの取得までやりました。
それでは、いってみましょう!
前回の記事はこちら
データの更新をしてみよう
特定のフィールドを更新する場合は、下記のように行います。
1 2 3 4 5 6 | // Modelに構造体の配列をいれる db.Model(Users{}).Where("id = ?", 1).Update(&Users{ Name: "ゴン太", UpdateAt: getDate(), }) //// UPDATE users SET name='ゴン太', update_at={現在日時}; |
実際にどう変わるか確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package main import ( "fmt" "time" _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" ) func main() { // db接続 db, err := sqlConnect() if err != nil { panic(err.Error()) } defer db.Close() result := []*Users{} db.Find(&result) for _, user := range result { fmt.Println(user.Name) } fmt.Println("update") // Modelに構造体の配列をいれる error := db.Model(Users{}).Where("id = ?", 1).Update(&Users{ Name: "ゴン太", UpdateAt: getDate(), }).Error //// UPDATE users SET name='ゴン太', update_at={現在日時}; if error != nil { fmt.Println(error) } result = []*Users{} db.Find(&result) for _, user := range result { fmt.Println(user.Name) } } |
確認
変更前と変更後でログ出力させてみました。
1 2 3 4 5 6 7 8 9 | % go run main.go テスト太郎 テスト次郎 テスト三郎 update ゴン太 テスト次郎 テスト三郎 |
無事、 「テスト太郎」 が 「ゴン太」 に変わっていますね。
ORM の良さとしては、SQL構文を網羅してなくても、直感的に操作できるのがいいところですね!
データを削除してみよう
「データの追加」「取得」「更新」まで終わったので、最後に「データの削除」をしてみます。
データの削除も簡単です。
1 2 | // Deleteに構造体の配列をいれる db.Where("id = ?" , 1).Delete(Users{}) |
基本的には、Where に条件を入れて Delete を書くだけです。
実際に、データを削除してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package main import ( "fmt" "time" _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" ) func main() { // db接続 db, err := sqlConnect() if err != nil { panic(err.Error()) } defer db.Close() result := []*Users{} db.Find(&result) for _, user := range result { fmt.Println(user.Name) } fmt.Println("Delete") // Deleteに構造体の配列をいれる error := db.Where("id = ?" , 1).Delete(Users{}).Error //// DELETE from users where id=1 if error != nil { fmt.Println(error) } result = []*Users{} db.Find(&result) for _, user := range result { fmt.Println(user.Name) } } |
確認
先ほどの更新と同様に、変更前と変更後でログ出力させてみました。
1 2 3 4 5 6 7 8 | % go run main.go ゴン太 テスト次郎 テスト三郎 Delete テスト次郎 テスト三郎 |
idが「1」である「ゴン太」が削除されていますね。
これで、基本的なデータ操作は、全てできるようになりました!
第14回へつづく!
今回は、前回に引き続き、MySQL を Go言語(Golang)で操作してみました。
今までの記事で「Firestore」と「ObjectBox」。
そして、今回の「MySQL」と3つのデータベースを触ってみました。
どれもGo言語(Golang)上では、扱いやすい印象がありました。
技術選定する際にツールの選択肢が増えることは、エンジニアにとっても嬉しいことだと思います!
それぞれの「サービス」や「プロジェクト」に合ったものを是非使ってみてください!
なお、今回作成したgoファイルは、こちらのリポジトリにて管理しています。
次回の記事はこちら
オススメのGo入門本
こちらの記事もオススメ!
第1回の記事はこちら
書いた人はこんな人

- 新潟生まれ新潟育ち本業はモバイルアプリエンジニア。
日々、猫(犬)エンジニアとして活躍中!
IT技術9月 20, 2023開発効率を少しだけ上げるGithubActionsの便利な使い方
IT技術4月 7, 2023【ISUCON部】ライトコードISUCON部 始動!
IT技術4月 18, 2022【Android】Webでよくみる入力Boxを手作り
IT技術1月 19, 2022【Android】SeekbarでスイッチなUIを作る