sql2struct是一款由开发者idoubi创建的工具,旨在简化Go Web开发中数据库表结构与Go结构体之间的映射过程。该工具通过解析SQL建表语句,自动生成对应的Go struct代码,极大地提高了开发效率。经过重构,新版sql2struct支持自定义转换设置,例如tag、大写字段、字段类型映射等,并增加了表注释、表名称、字段注释的自动生成功能。新版本采用了Typescript、React、Vite等现代技术栈,用户可以通过Chrome插件或在线访问的方式使用。
✨ sql2struct最初是为了解决Go语言开发中手动编写结构体映射数据库表字段的繁琐问题而诞生的,它能够将SQL建表语句转换为Go struct代码,从而提高开发效率。
💡 为了满足不同用户的需求,sql2struct提供了自定义转换设置功能,包括选择需要生成的tag、定义大写字段,以及自定义SQL字段类型与Go struct字段类型的映射关系。
🚀 新版本的sql2struct在技术栈上进行了升级,采用了Typescript、React、Vite等现代技术,界面构建使用了codemirror-react编辑器和semi-design组件库。
🌐 用户可以通过Chrome插件或在线访问的方式使用sql2struct,也可以通过源码进行本地部署,方便快捷地在开发中使用该工具。
原创 idoubi 2022-06-27 01:07 广东
一个解放生产力的开发工具。

对不起,有一点标题党了。前阵子,在字节跳动工作的朋友告诉我,我的一个开源作品“sql2struct”在字节内部被推荐为实用工具了。字节内部实用工具有一点小激动,对于一个开发者而言,最大的鼓励莫过于自己的作品被更多人的看到、使用和喜爱。sql2struct 是什么?其实也不是什么了不起的项目。sql2struct 是我五年前刚接触 Go 开发时写的一个小工具,解决了日常开发中的一个小痛点。做过 Go web 开发的朋友应该知道,Go 是一门编译型语言,在操作数据库的时候,我们一般需要定义一个 Model 来映射数据表的字段。比如有这么一个用户表:数据表我们需要在 Go 文件中定义一个 struct 来做字段映射:Go Struct如果要映射的表字段比较多,在 Go 代码中一个一个去写,还是比较费时费力的。程序员都是懒惰的。我当时的想法是,能不能写个转换工具,导出建表用的 sql 语句,一次性转换成 Go 结构体字段。于是 sql2sturct 诞生了。最初的版本长这样:sql2struct 初版为了使用方便,我把 sql2struct 做成了 chrome 插件的形式,只需要安装一次,每次只要打开插件,粘贴 sql 建表语句,就能复制使用生成的 go struct 代码。sql2struct 发布以来,没怎么做过推广,具体有多少人在用我不好估计,但我自己的日常开发中,有在频繁使用,也安利给了身边的一些同事。陆陆续续也收到了一些用户的反馈:sql2struct issues毕竟发布时间比较久了,技术栈很老旧,想要重构一版,但一直没有足够的动力,也没有连续的时间去做这件事。最近卯足了劲儿,花了一个礼拜晚上的时间,使用新的技术栈完全重构了一版。新版 sql2struct 介绍跟原来的界面总体相差不大,使用方式也保持一致:先在数据库客户端通过 show create table xxx\G;
拿到建表的 sql 语句;获取 sql 建表语句在左边的输入框粘贴建表的 sql 语句,右边输入框自动生成对应的 go struct 代码;
sql 转换成 go struct复制生成的 go struct 代码,粘贴到项目 model 中使用。新版 sql2struct 继承并扩展了原版的自定义转换设置功能。比如可以勾选哪些 tags 需要在 go struct 生成:
go struct tags比如为了满足 go 的命名风格,自定义哪些字段在转换成 go struct 时需要全部大写:
go struct 大写字段比如你也可以自定义 sql 字段类型与 go struct 字段类型的映射关系:
field maps除此之外,新版还支持了表注释、表名称、字段注释的自动生成。
技术栈
旧版的 sql2struct 以 chrome 插件的形式创建,主要技术栈是 html + css + js,界面构建使用了 vue + element-ui。新版本 sql2struct 使用 typescript + react + vite + pnpm 开发。界面上用到了 codemirror-react 编辑器和 semi-design 组件库。github 仓库地址是:
https://github.com/idoubi/sql2struct在线使用可以访问:
https://dou.tools/sql2struct/也可以通过源码进行本地部署:
# 下载源码
git clone https://github.com/idoubi/sql2struct.git
# 安装
cd sql2struct
pnpm install
# 预览与调试
pnpm run dev
# 构建发布
pnpm run build
后记
sql2struct 是一个从痛点出发,用来提高生产力的开发工具。很开心有部分朋友已经用上了,也希望能有更多的朋友了解这个工具,使用起来,参与共建。










阅读原文
跳转微信打开