这个 golang struct 是用的什么生成的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
guanhui07
V2EX    Go 编程语言

这个 golang stuct 是用的什么生成的

  •  
  •   guanhui07 2022 年 9 月 14 日 4282 次点击
    这是一个创建于 1225 天前的主题,其中的信息可能已经有所发展或是发生改变。

    gorm

    ddl 语句如下:

    CREATE TABLE `pf_station_info` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '站点名称', `location` json NOT NULL COMMENT '站点所在经纬度', `ip_address` varchar(15) NOT NULL DEFAULT '' COMMENT '站点 ip 地址,非此 IP 数据不接收', `tiger_shaped` char(32) NOT NULL DEFAULT '' COMMENT '握手符号', `heartbeat` int unsigned NOT NULL DEFAULT '0' COMMENT '上次心跳时间戳', `status` int NOT NULL DEFAULT '0' COMMENT '站点状态:0 正常,非 0 为停用时间戳', `add_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; 

    要生成 如下 gorm struct , not null 以及 comment 也在 tag 里 且 location 类型 是 datatypes.JSON 类型

    type Station struct { Id int64 `json:"id" gorm:"primaryKey;autoIncrement;comment:主键 id"` Name string `gorm:"type:varchar(20);column:name;not null;comment:站点名称" json:"name"` Location datatypes.JSON `gorm:"type:json;column:location;not null;comment:站点所在经纬度" json:"location"` IpAddress string `gorm:"type:varchar(15);column:ip_address;not null;comment:站点 ip 地址,非此 IP 数据不接收" json:"ip_address"` TigerShaped string `gorm:"type:char(32);column:tiger_shaped;not null;comment:握手符号" json:"tiger_shaped"` Heartbeat int64 `gorm:"type:int(10);column:heartbeat;not null;comment:上次心跳时间戳" json:"heartbeat"` Status int64 `gorm:"type:int(11);column:status;comment:站点状态:0 正常,非 0 为停用时间戳" json:"status"` AddTime time.Time `gorm:"type:datetime;comment:创建时间" json:"add_time,omitempty"` UpdateTime time.Time `gorm:"type:datetime;comment:修改时间" json:"update_time,omitempty"` } 

    有人知道 上面的 struct 是用 什么工具生成的吗?我猜不可能手写吧。

    谷歌搜了下 看了好几个 根据 ddl 生成都不一样 ,比如下面的

    https://www.qetool.com/sql_json_go/sql.html

    http://sql2struct.atotoa.com/

    utools 里的 sql2struct 生成也不一样

    有没大佬推荐个好用点的 或 跟这个 生成一模一样的。

    17 条回复    2022-09-15 12:04:45 +08:00
    treblex
        1
    treblex  
       2022 年 9 月 14 日
    orm 不是 struct 生成 sql ,是手的吧
    guanhui07
        2
    guanhui07  
    OP
       2022 年 9 月 14 日
    @treblex #1 不能吧 先写 struct 再 根据 struct 生成 ddl 语句 吧。
    那我这个 struct 怎么 生成 ddl 语句 ,用什么工具 转。

    我现在想到是 ddl2struct 网上找的 不太一样 只能改改 ,因为好奇所以找了找 ,没找到 一样的。
    说不定别人自己写的转换工具 ,哈哈
    ikaros
        3
    ikaros  
       2022 年 9 月 14 日
    @guanhui07 gorm v2 的 migrator interface 里面有个 create table 函数, v1 我记得就是在*gorm.DB 里面, 可以用这个函数创建表
    idoubi
        4
    idoubi  
       2022 年 9 月 14 日 via Android
    可能用我这个工具生成完,然后自己改了一些 tag ? https://dou.tools/sql2struct/?
    to2false
        5
    to2false  
       2022 年 9 月 14 日
    推荐官方下的一个工具 https://github.com/go-gorm/gen
    Johngodme
        6
    Johngodme  
       2022 年 9 月 14 日   1
    aeli
        7
    aeli  
       2022 年 9 月 14 日
    copilot 可以根据 sql 语句注释之类的自动生成
    Trim21
        8
    Trim21  
       2022 年 9 月 14 日
    应该是 gorm/gen ,具体字段生成出来的类型是可以自己设置的。
    xioxu
        9
    xioxu  
       2022 年 9 月 14 日
    历史悠久的工具 codeSmith 就可以根据 schema 生成任何代码
    king888
        10
    king888  
       2022 年 9 月 14 日   2
    不用 gorm

    一般用 fraenky8/tables-to-go 生成 struct ,配合不到 500 行自己封装的 CURD 直接撸,至于 Database Design ,AutoMigrate 是直接用的 DbSchema 这款软件,爽的一批
    FrankFang128
        11
    FrankFang128  
       2022 年 9 月 14 日
    @king888 看起来不错
    waltcow
        12
    waltcow  
       2022 年 9 月 14 日
    结合 sql ,copilot 一直 tab 到底
    keepeye
        13
    keepeye  
       2022 年 9 月 14 日
    我都是手写 tag ,用 gorm 的 migrate 创建表
    ElmerZhang
        14
    ElmerZhang  
       2022 年 9 月 14 日
    copilot 就可以,把 DDL 以注释的形式粘在文件开头,然后开始写 struct ,写个一两行之后,后面的就都能用 copilot 补全一路 tab 出来。搞完了再把 DDL 注释删了就行了。
    dalang
        15
    dalang  
       2022 年 9 月 14 日
    lrvy
        16
    lrvy  
       2022 年 9 月 14 日
    gorm 有个 gen 库 https://github.com/go-gorm/gen
    timethinker
        17
    timethinker  
       2022 年 9 月 15 日
    挺有意思,刚才用 JS 手写了一个 DDL 的解析器,可以将这种 CREATE TABLE 转换成 JSON ,然后有了 JSON 以后就可以用来生成代码了,仓促之下只做了 CREATE TABLE 这种 SQL 语句,写的也比较凌乱,可能还有一些 BUG ,不过可以自行拓展。

    地址: https://jsfiddle.net/AlexMaho/b6c1utoe/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     984 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:17 PVG 06:17 LAX 14:17 JFK 17:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86