Go言語(Golang)入門~第13回目~

笹川先生
(株)ライトコードの笹川(ささがわ)です!
今回は、前回に引き続き MySQL を使っていきます!
前回は、データの取得までやりました。
それでは、いってみましょう!
前回の記事はこちら
2019.11.27Go言語(Golang)入門~第12回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 今回は、データベ...
データの更新をしてみよう
特定のフィールドを更新する場合は、下記のように行います。
| // 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) } } |
確認
変更前と変更後でログ出力させてみました。
| % go run main.go テスト太郎 テスト次郎 テスト三郎 update ゴン太 テスト次郎 テスト三郎 |
無事、 「テスト太郎」 が 「ゴン太」 に変わっていますね。
ORM の良さとしては、SQL構文を網羅してなくても、直感的に操作できるのがいいところですね!
データを削除してみよう
「データの追加」「取得」「更新」まで終わったので、最後に「データの削除」をしてみます。
データの削除も簡単です。
| // 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) } } |
確認
先ほどの更新と同様に、変更前と変更後でログ出力させてみました。
| % go run main.go ゴン太 テスト次郎 テスト三郎 Delete テスト次郎 テスト三郎 |
idが「1」である「ゴン太」が削除されていますね。
これで、基本的なデータ操作は、全てできるようになりました!
さいごに
今回は、前回に引き続き、MySQL を Go言語(Golang)で操作してみました。
今までの記事で「Firestore」と「ObjectBox」。
そして、今回の「MySQL」と3つのデータベースを触ってみました。
どれもGo言語(Golang)上では、扱いやすい印象がありました。
技術選定する際にツールの選択肢が増えることは、エンジニアにとっても嬉しいことだと思います!
それぞれの「サービス」や「プロジェクト」に合ったものを是非使ってみてください!
なお、今回作成したgoファイルは、こちらのリポジトリにて管理しています。
関連記事
2019.09.13Go言語(Golang)を習得したい! 笹川先生 (株)ライトコードでモバイルアプリケーション開発をしている笹川(ささが...
2019.09.17Go言語(Golang)を習得したい!~第2回~
(株)ライトコードの笹川(ささがわ)です。 前回に引き続き、今回もGo言語(Gol...
2019.09.26Go言語(Golang)入門~第3回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です。 今回でGo言語(G...
2019.10.02Go言語(Golang)入門~第4回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です 今回も、Go言語(G...
2019.10.09Go言語(Golang)入門~第5回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 前回は、RESR ...
2019.10.17Go言語(Golang)入門~第6回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 先日、Twitte...
2019.10.23Go言語(Golang)入門~第7回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 今回は、前回に引き...
2019.10.30Go言語(Golang)入門~第8回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 前回は、Twitt...
2019.11.06Go言語(Golang)入門~第9回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 前回は、Goの環境...
2019.11.13Go言語(Golang)入門~第10回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 今回は、前回に引...
2019.11.20Go言語(Golang)入門~第11回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 今回は、Fire...
2019.11.27Go言語(Golang)入門~第12回目~ 笹川先生 (株)ライトコードの笹川(ささがわ)です! 今回は、データベ...
ライトコードよりお知らせ

にゃんこ師匠

ミツオカ

にゃんこ師匠

ミツオカ

にゃんこ師匠

ミツオカ
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね! 一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!
当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。
また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!
なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。
書いた人はこんな人
- 笹川 (社員)
- 新潟生まれ新潟育ち本業はモバイルアプリエンジニア。
日々、猫(犬)エンジニアとして活躍中!