SQL to GORM 変換
MySQL の CREATE TABLE 文を貼り付けて Go GORM モデル構造体を生成
入力
出力
型マッピング対応表
| SQL (MySQL) | Go |
|---|---|
| tinyint(1) | bool |
| tinyint / smallint / mediumint / year | int32 |
| int / integer | int |
| bigint | int64 |
| varchar / char / text / tinytext / mediumtext / longtext / enum / set / time | string |
| datetime / timestamp / date | time.Time |
| decimal / numeric | float64 |
| float | float32 |
| double / real | float64 |
| json | json.RawMessage |
| binary / varbinary / blob / tinyblob / mediumblob / longblob | []byte |
tinyint(1) は bool に、その他の tinyint は int32 にマッピングされます。認識できない SQL 型は string にフォールバックし、生成コード内にコメントで示されます。
使い方
MySQL の CREATE TABLE 文(複数可)を入力欄に貼り付け、必要に応じてオプションを切り替えて「コード生成」をクリックすると、そのままコンパイルできる Go GORM モデルコード(package と import 付き)が得られます。主キー・オートインクリメント・NOT NULL・デフォルト値・コメント・ユニークインデックス・通常インデックスの変換に対応し、複数の文からは複数の構造体が生成されます。すべてブラウザ内で処理され、SQL がサーバーに送信されることはありません。
マッピング方針
unsigned 列は符号付き Go 型にマッピングされます(例: int unsigned → int)。uint 系が必要な場合は手動で調整してください。date は datetime/timestamp と同様に time.Time にマッピングされます(文字列で扱いたい場合は string に変更してください)。decimal/numeric は float64 にマッピングされますが精度に限界があるため、金額などの厳密な計算には shopspring/decimal の利用を推奨します。json は json.RawMessage にマッピングされ、encoding/json の import が自動で追加されます。