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