• トップ
  • ブログ一覧
  • 【第13回】Go言語(Golang)入門~MySQL利用編~
  • 【第13回】Go言語(Golang)入門~MySQL利用編~

    笹川(エンジニア)笹川(エンジニア)
    2019.12.04

    IT技術

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

    笹川笹川先生

    (株)ライトコードの笹川(ささがわ)です!

    今回は、前回に引き続き MySQL を使っていきます!

    前回は、データの取得までやりました。

    それでは、いってみましょう!

    前回の記事はこちら

    featureImg2019.11.27【第12回】Go言語(Golang)入門~MySQL接続編~第12回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です!今回は、データベース系の第3...

    データの更新をしてみよう

    特定のフィールドを更新する場合は、下記のように行います。

    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ファイルは、こちらのリポジトリにて管理しています。

    次回の記事はこちら

    featureImg2019.12.12【第14回】Go言語(Golang)入門~Twitterアプリ作成編~第14回~Go言語(Golang)入門~笹川先生(株)ライトコードの笹川(ささがわ)です!そろそろレベルも上がり、Go...

    オススメのGo入門本

    Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
    Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る

     

    こちらの記事もオススメ!

    featureImg2020.08.08Go言語 特集知識編人気急上昇中のGo言語(Golang)って何だ?実装編Go言語(Golang)入門...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    第1回の記事はこちら

    featureImg2019.09.13【第1回】Go言語(Golang)入門~環境構築編~第1回~Go言語(Golang)を習得したい!~笹川先生(株)ライトコードでモバイルアプリケーション開発をしている笹川...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    笹川(エンジニア)

    笹川(エンジニア)

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background