【第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)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
笹川(エンジニア)
新潟生まれ新潟育ち本業はモバイルアプリエンジニア。 日々、猫(犬)エンジニアとして活躍中!
おすすめ記事
ライトコードの営業マンって何してるの?〜高橋さん編〜
広告メディア事業部
2024.05.08
日常
移転したライトコード大阪オフィスを調査せよ!
広告メディア事業部
2024.04.03
日常
【GCP】BIG QUERYを触り程度に理解してみる
かねまさ(エンジニア)
2024.04.02
IT技術
【Android】Github ActionsでFirebase Test Labの実行を分散する
笹川(エンジニア)
2024.04.02
IT技術
【Next.js】App Router で使用できるキャッシュまとめ
モーリー(エンジニア)
2024.03.29
IT技術