![笹川(エンジニア)](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2019%2F06%2Fsasagawa100-150x150.jpg&w=64&q=75)
【第13回】Go言語(Golang)入門~MySQL利用編~
![笹川(エンジニア)](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2019%2F06%2Fsasagawa100-150x150.jpg&w=64&q=75)
IT技術
第13回~Go言語(Golang)入門~
![笹川](https://rightcode.co.jp/wp-content/uploads/2019/06/sasagawa100.jpg)
(株)ライトコードの笹川(ささがわ)です!
今回は、前回に引き続き 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)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
![笹川(エンジニア)](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2019%2F06%2Fsasagawa100-150x150.jpg&w=3840&q=75)
笹川(エンジニア)
新潟生まれ新潟育ち本業はモバイルアプリエンジニア。 日々、猫(犬)エンジニアとして活躍中!
おすすめ記事
Rust/ActixWebでRestAPIでバリデーションとログ
たむけん(エンジニア)
2024.06.18
IT技術
LaravelとFilamentを使って管理画面を爆速構築
![モリ(エンジニア)](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2024%2F01%2Fmoriya_icon-96x96.jpg&w=64&q=75)
モリ(エンジニア)
2024.06.18
IT技術
【C# 9.0】Record 型 の使い方について
![やまちゃん(エンジニア)](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2022%2F02%2Fvr_motion_tracking_6dof-96x96.png&w=64&q=75)
やまちゃん(エンジニア)
2024.06.18
IT技術
YOUは何しにライトコードへ〜小林さん編〜
![広告メディア事業部](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2022%2F08%2Fcropped-icon_tobaru_2_150150-96x96.png&w=64&q=75)
広告メディア事業部
2024.06.06
日常
コーポレートサイトをリニューアルしたので、インフラ周りでやったことをまとめてみる
![こま(エンジニア)](/_next/image?url=https%3A%2F%2Fapi.rightcode.co.jp%2Fwp-content%2Fuploads%2F2023%2F02%2Fcropped-matsuda_icon-96x96.jpg&w=64&q=75)
こま(エンジニア)
2024.06.04
IT技術