ホームページ >バックエンド開発 >Golang >MySQL の「bit」タイプを Go にマッピングする方法: Bool または Custom Type?

MySQL の「bit」タイプを Go にマッピングする方法: Bool または Custom Type?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-17 11:07:02182ブラウズ

How to Map MySQL's 'bit' Type to Go: Bool or Custom Type?

MySQL の 'bit' 型を Go にマッピング: Go 型の選択を理解する

MySQL では、'bit' データ型は単一ビットを表します値。ブール状態を示すためによく使用されます。 Beego などの ORM を介して MySQL で Go を使用する場合、この「ビット」タイプのマッピングに適切な Go タイプを選択することが重要です。

Java と Go データ型の考慮事項

前述したように、Java はそのようなシナリオに「bit(1)」タイプを利用します。ただし、Go にはネイティブの「ビット」型がありません。したがって、どの Go 型が「ビット」値を適切に表現できるかを判断する必要があります。

Bool または Custom Type?

最初は、 「ビット」データのブール型の性質に対応する「ブール」タイプを選択します。ただし、'bool' を使用すると、データベースと対話するときに変換エラーが発生する可能性があります。

カスタム BitBool 実装

この問題に対処するために、Go ライブラリ 'Sqlx' が提供するMySQL の「ビット」データをマッピングするために特別に設計されたカスタムの「BitBool」タイプ。この型は、driver.Valuer インターフェイスと sql.Scanner インターフェイスを実装し、ブール値と 'bit(1)' ビットフィールド間の変換を効果的に行います。

Beego ORM 実装

内Beego ORM 構造体に「BitBool」タイプを使用できるようになりました。以下に示す「削除済み」フィールド:

type BaseModel struct {
    Id          string           `orm:"pk";form:"id"`
    CreatedTime time.Time        `orm:"auto_now_add;type(datetime)";form:"-"`
    UpdatedTime time.Time        `orm:"auto_now;type(datetime)";form:"-"`
    Deleted     BitBool `form:"-"`
}

カスタムの「BitBool」タイプを利用することで、「bit(1)」データを Beego プロジェクト内の Go の「BitBool」タイプに効果的にマッピングできます。データベース スキーマを変更する必要はありません。

以上がMySQL の「bit」タイプを Go にマッピングする方法: Bool または Custom Type?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。