BackEnd

gorpを使ってDBを操作する

投稿日:2019年11月7日 更新日:

はじめに

今回の記事では、 gorp を使ってDBを操作する方法を紹介します。

GoのORM

GoでDBにアクセスする場合、今回紹介する gorp の他にも様々な選択肢があります。ORMの比較についてはこちらの記事が参考になります。

gorpの紹介

gorp では、シンプルなインタフェースを通してCRUD操作、構造体へのマッピング、トランザクションなどの処理ができます。

insert、update、deleteおよびPK指定のselectの場合、クエリを書くことなく処理できるほか、SQLを書いて実行することもできます。

他にも、テーブルの作成やインデックスを貼ることもできます。

gorpの基本操作

まず初めに、 gorp でのCRUD操作の書き方を見ていきましょう。前提として、以下のような構造体が定義されているものとします。

db:xxx については後ほど説明します。

insert

insertは以下のように記述します。

select

selectは以下のように記述します。

さらに、以下のようにパラメータを map でbindingすることもできます。

1件だけ取得したい場合は以下のように記述します。ただし、1件も該当しない場合もしくは、複数件該当する場合はエラーが返ります。

PKを指定してselectする場合は以下のように記述できます。

update

updateは以下のように記述します。count には更新したレコード数が返ります。

delete

deleteは以下のように記述します。ただし、構造体にPKを定義しておく必要があります。

構造体のmapping

gorpではSQLの実行結果をmappingする構造体をあらかじめ定義しておく必要があります。先ほど定義した構造体をもとに説明します。

db: の次の文字列でbindするカラムを指定します。PKの場合は primarykey を記述します。文字列型の場合は size でサイズを指定できます。Nullを許容しない場合は notnull を記述します。

テーブルの作成

gorpではテーブルを作成する関数が用意されています。以下のように記述します。

さいごに

gorpの基本的な使い方を紹介しました。他にもインデックスの作成やupdateなどのhookなどの機能がありますので、興味がありましたらgo docなどをご覧ください。

おすすめ書籍

スターティングGo言語 (CodeZine BOOKS) Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る impress top gearシリーズ 改訂2版 みんなのGo言語

page_footer_responsive




-BackEnd
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

laravel logo

[Laravel]データベースの暗号化について考えてみる

1 はじめに2 環境3 Laravelでの暗号化4 暗号化されたカラムは、そのままではLIKE検索ができない4.1 問題点4.2 解決案1:全件取得してPHP側でがんばって検索する4.3 解決案2:暗 ...

laravel logo

Laravel Cashier サブスクリプションに使用するテーブルを理解する

1 はじめに2 Laravel Cashierのテーブル2.1 usersテーブル2.2 subscriptionsテーブル2.3 supscription_itemsテーブル3 課金情報の更新方法4 ...

【Git】マージコミットを消したい

1 はじめに2 例えばこんなことってないでしょうか?3 マージコミットを消す4 さいごに はじめに こんにちは、tonnyです。 今回はGitのケーススタディ的なものを書きたいと思います。 反面教師と ...

Pythonコードが育っても品質を維持するツールを考える[Ruff Pyright]

1 はじめに2 各ツールの目的2.1 Ruff2.1.1 Pylint (参考)2.2 Pyright3 各ツールの設定 (VSCodeでの使用例)3.1 Ruff3.2 Pyright4 pre-c ...

postgresql

PostgreSQLでテーブルをパーティショニングする

1 はじめに2 パーティショニングとは3 PostgreSQLでのパーティショニング3.1 パーティションテーブルでの制約3.2 パーティショニングの種類4 パーティションテーブルを定義する4.1 古 ...

フォロー

blog-page_side_responsive

2019年11月
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。