• mysql表结构自动生成golang struct


    安装

    golang源码包: go get github.com/gohouse/converter

    示例表结构

    CREATE TABLE `prefix_user` (
      `Id` int(11) NOT NULL AUTO_INCREMENT,
      `Email` varchar(32) NOT NULL DEFAULT '' COMMENT '邮箱',
      `Password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
      `CreatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`Id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'

    golang代码简单用法

    package main
    import (
        "fmt"
        "github.com/gohouse/converter"
    )
    func main() {
        err := converter.NewTable2Struct().
            SavePath("/home/go/project/model/model.go").
            Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
            Run()
        fmt.Println(err)
    }

    golang代码详细用法示例

    package main
    
    import (
        "fmt"
        "github.com/gohouse/converter"
    )
    
    func main() {
        // 初始化
        t2t := converter.NewTable2Struct()
        // 个性化配置
        t2t.Config(&converter.T2tConfig{
            // 如果字段首字母本来就是大写, 就不添加tag, 默认false添加, true不添加
            RmTagIfUcFirsted: false,
            // tag的字段名字是否转换为小写, 如果本身有大写字母的话, 默认false不转
            TagToLower: false,
            // 字段首字母大写的同时, 是否要把其他字母转换为小写,默认false不转换
            UcFirstOnly: false,
            //// 每个struct放入单独的文件,默认false,放入同一个文件(暂未提供)
            //SeperatFile: false,
        })
        // 开始迁移转换
        err := t2t.
            // 指定某个表,如果不指定,则默认全部表都迁移
            Table("user").
            // 表前缀
            Prefix("prefix_").
            // 是否添加json tag
            EnableJsonTag(true).
            // 生成struct的包名(默认为空的话, 则取名为: package model)
            PackageName("model").
            // tag字段的key值,默认是orm
            TagKey("orm").
            // 是否添加结构体方法获取表名
            RealNameMethod("TableName").
            // 生成的结构体保存路径
            SavePath("/Users/fizz/go/src/github.com/gohouse/gupiao/model/model.go").
            // 数据库dsn,这里可以使用 t2t.DB() 代替,参数为 *sql.DB 对象
            Dsn("root:root@tcp(localhost:3306)/test?charset=utf8").
            // 执行
            Run()
        
        fmt.Println(err)
    }

    result

    package model
    
    import "time"
    
    type User struct {
        Id         int     `json:"Id" orm:"Id"`
        Email      string  `json:"Email" orm:"Email"`           // 邮箱
        Password   string  `json:"Password" orm:"Password"`     // 密码
        CreatedAt  string  `json:"CreatedAt" orm:"CreatedAt"`
    }
    
    func (*User) TableName() string {
        return "user"
    }
  • 相关阅读:
    0302 随想
    1231递归下降语法分析程序设计
    《构建之法》1、2、3章读后感
    复利计算总结
    操作系统实验0
    学习进度条
    0302思考并回答一些问题
    评论
    c语言文法
    词法分析
  • 原文地址:https://www.cnblogs.com/sunzhiqi/p/12975255.html
Copyright © 2020-2023  润新知