mysql 生成 model_MySQL 直接导出 model

使用db2struct自动生成MySQL到Golang的Struct
文章介绍了如何使用db2struct工具从MySQL数据库中的表自动生成Golang结构体。用户需要安装Go环境,然后通过go get获取db2struct。脚本gen-model.sh检查并安装工具,根据.config文件中的数据库配置和表名生成对应的Go源文件,包含结构体定义。.config文件定义了如包名、保存路径、数据库连接信息等参数。最终,运行脚本会在指定目录生成结构体文件。

db2struct

Converts a mysql table into a golang struc

根据mysql数据库中的表自动生成golang struct

地址

安装

- 首先需要安装go

- go get github.com/Shelnutt2/db2struct/cmd/db2struct

使用

- 首先看看工具的使用

bfa25f5db31a2e939aaa198f7d6ad085.png

- 为了更加的通用,我写量脚本,将数据库配置以及表名等参数独立了出来,方便使用

- 上述参数需要放到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来运行的

581efa351c12d1b7001d83a37b4967f7.png

- 然后在model文件夹就可以看到文件了

a2f2b7cfc5b6e7196566acef85429043.png

8712fe11952ccc9695cdd1647935faf8.png

本作品采用《CC 协议》,转载必须注明作者和本文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值