• 让gorm代码飞起来,gorm+gmodeltool生成entity,让实体类代码更轻松。


    背景

    不卷!php经历多年的不衰败的原因只有一个,哪就是不卷,但是由于并发和缺乏编译严谨度降低,使得长青树不得己走向了衰败。
    但!叱咤风云多年,大企百度、腾讯、新浪、搜狐的首先语言的流行在于,其语言的简洁,对业务表达的更为直接。拒绝java的对象中加层中层,在我眼中哪就是一坨臭臭~
    话不多说,上代码,看看效果!

    gmodeltool生成实体类

    1. go环境安装(1.18以上版本),不多说,去必应一下吧!
    2. 安装gmodeltool
     go install github.com/lingdor/gmodeltool@latest
    

    到这里有2种方式,一处是shell生成,一种是嵌入式生成(就是在代码中生成指定代码段)。
    3. 生成entity

        gmodeltool gen entity --gorm --dsn 'user:password@tcp(127.0.0.1:3306)/db1' --to-files ./ --tables "tb_user"
    

    生成的entity

    tbuser_gen.go

    //gmodel:gen:entity:tb_user:10ee7e5ec910d29e251a7a7481b7fed9
    type TbUserEntity struct {
    	id         *string    `gmodel:"id" gorm:"column:id;primaryKey;"`     //
    	name       *string    `gmodel:"name" gorm:"column:name"`             //
    	age        *int       `gmodel:"age" gorm:"column:age"`               //
    	createtime *time.Time `gmodel:"createtime" gorm:"column:createtime"` //
    }
    //gmodel:gen:end
    

    嵌入式生成-代码段(可以随时一键更新代码)

        package main
    
        //go:generate gmodeltool gen entity --gorm --dsn 'user:password@tcp(127.0.0.1:3306)/db1' --tables "tb_user"
        //gmodel:gen:entity:@embed:10ee7e5ec910d29e251a7a7481b7fed9
        type TbUserEntity struct {
        	id         *string    `gmodel:"id" gorm:"column:id;primaryKey;"`     //
        	name       *string    `gmodel:"name" gorm:"column:name"`             //
        	age        *int       `gmodel:"age" gorm:"column:age"`               //
        	createtime *time.Time `gmodel:"createtime" gorm:"column:createtime"` //
    
        }
        //gmodel:gen:end
    
    

    gmodeltool
    通过IDE, 可以一键刷新实体类!

    gmodeltool 配置

    你可以在项目的根目录中放置一个gmodel.yml文件,用于配置gmodeltool生成时,所需的相关配置。如数据库连接dsn,是否显示verbose。
    gmodel.yml

    gmodel:
      verbose: true
      connection:
        default:
          dsn: mysql://root:123456@tcp(127.0.0.1:3306)/db1
        user:
          dsn: mysql://root:123456@tcp(127.0.0.1:3306)/db2
    
     这样,你就可以不用每次执行gmodeltool指令时都加dsn和verbose参数了,当然可以通过connection参数指定配置中的连接地址。
    

    3ks.

  • 相关阅读:
    从0开始学习JavaScript--JavaScript 流程控制
    【Mysql-索引的底层结构】
    老板:你为什么要选择 Vue?
    spinnaker 持续部署
    基于ubuntu 20.04与cri-docker 搭建部署高可用k8s 1.25.3
    视频融合共享平台LntonCVS视频监控安防系统运用多视频协议建设智慧园区方案
    2.6 宽带接入技术
    HTML5期末大作业:基于HTML+CSS+JavaScript仿蘑菇街购物商城设计毕业论文源码
    传统供应链和现代供应链有哪些区别?
    多租户架构
  • 原文地址:https://www.cnblogs.com/a-xu/p/17964488