MySQL table into a golang struc

qinhan發表於2019-09-22

 db2struct

 Converts a mysql table into a golang struc
 
根據mysql資料庫中的表自動生成golang struct

 地址

https://github.com/Shelnutt2/db2struct

 安裝

- 首先需要安裝go
- go get github.com/Shelnutt2/db2struct/cmd/db2struct

 使用

- 首先看看工具的使用
Golang

- 為了更加的通用,我寫量指令碼,將資料庫配置以及表名等引數獨立了出來,方便使用
- 上述引數需要放到shell指令碼同級的目錄之下的.config檔案中
- 執行指令碼之後,會為每個表生產一個對應的*.go檔案,檔案中包含了轉化之後的struct,struct名、檔名就是表名
- 指令碼如下所示:
    - gen-model.sh

#!/usr/bin/env bash

# check if db2struct exist
check()
{
      if !(hash ${convert_tool} 2>/dev/null); then
        echo "convert tool ${convert_tool} is absent, install..."
        go get github.com/Shelnutt2/db2struct/cmd/db2struct
      fi
}

# generate golang model
gen()
{
  for table in ${TABLES[@]};
  do
    echo "del old model/${table}.go" && rm ../../model/${table}.go
    struct_name="$(echo ${table:0:1} | tr '[a-z]' '[A-Z]')${table:1}"
    db2struct -H ${HOST} -u ${USER} -p ${PASSWORD}  \
      --package ${GO_PACKAGE_NAME} -d ${DB}  \
      --table ${table} --struct ${struct_name}  \
      --target=${SAVE_PATH}/${table}.go \
      --json -v
    echo "finish model/${table}.go\n"
  done

# import related config
source .config
convert_tool=db2struct
check
gen

- 配置檔案例項如下:
    - .config

GO_PACKAGE_NAME=model
SAVE_PATH=../../model
HOST=127.0.0.1
USER=root
PASSWORD=12345678
DB=gp_oj
TABLES=("role" "tag" "algorithm")

.config中具體引數含義如下所示:

| 引數名 | 意義 | 
| ----- | ---- |
| GO_PACKAGE_NAME | model檔案(.go)的package name|
| SAVE_PATH | model檔案(
.go)儲存路徑 |
| HOST | MySQL host |
| USER | MySQL username |
| PASSWORD | MySQL password |
| DB | MySQL db name|
| TABLES | MySQL 需要轉化成struct的表 |

 demo

- 允許結果大致如下所示:
    - 我是通過makefile來執行的
Golang

- 然後在model資料夾就可以看到檔案了

Golang

Golang

相關文章