/generate-model

go语言从数据库映射生成数据模型

Primary LanguageGo

一、本包功能介绍

在实际项目开发中我们可能会习惯性的手动建立mysql数据表,或者在企业中有专门的DB来创建数据表,在我们go语言开发中不想手动去创建关于数据表的实体类(这里叫model,本人习惯性实体类用Entity来结尾),可以使用本包来一件生成实体类

二、使用方式

  • 1、下载依赖包

    go get -u github.com/kuangshp/generate-model
    go mod tity
  • 2、在项目的根目录下创建一个文件(比如generate.go)的文件用来生成实体类

    package main
    
    import (
    	"fmt"
    	"github.com/kuangshp/generate-model/converter"
    	"github.com/kuangshp/generate-model/utils"
    	"strings"
    )
    
    func main() {
    	var tableName string
    	fmt.Print("请输入表名:")
    	if _, err := fmt.Scanln(&tableName); err != nil {
    		return
    	}
    	var fileName = utils.Case2Camel(strings.ToUpper(tableName[0:1]) + tableName[1:]) // 转为首字目大写
    	var err = converter.NewTable2Struct().
    		SavePath(fmt.Sprintf("./model/%sEntity.go", fileName)). // 这个地方根据自己的需求来写
    		Dsn("root:123456@tcp(localhost:3306)/test?charset=utf8mb4"). // 配置数据库连接
    		TagKey("gorm").              // orm
    		EnableJsonTag(true).         // json
    		RealNameMethod("TableName"). // 生成表名
    		Table(tableName).            // 表名
    		DateToTime(true).            // 对时间字段进行转换
    		Config(&converter.T2tConfig{
    			JsonTagToHump: true,
    			StructEnd:     "Entity",
    		}). // 配置tag转驼峰
    		Run()
    	if err != nil {
    		fmt.Println("创建数据模型失败")
    		return
    	}
    	fmt.Println("生成数据模型成功")
    }
  • 3、运行上面的文件,控制台提示你输入表名,然后回车后自动生成数据模型

    package model
    
    import "time"
    
    type AccountEntity struct {
    	Id        int64     `gorm:"id" json:"id"`                // 主键id
    	UserName  string    `gorm:"username" json:"username"`    // 用户名
    	Password  string    `gorm:"password" json:"password"`    // 密码
    	CreatedAt time.Time `gorm:"created_at" json:"createdAt"` // 创建时间
    	UpdatedAt time.Time `gorm:"updated_at" json:"updatedAt"` // 更新时间
    	DeletedAt time.Time `gorm:"deleted_at" json:"deletedAt"` // 软删除时间
    }
    
    func (t *AccountEntity) TableName() string {
    	return "account"
    }
  • 4、继续自己的业务开发