gorm的自动化工具gen

gorm的自动化工具gen

官方

https://gorm.io/zh_CN/gen/

假设数据库结构如

Image1

这里使用gen-tool

安装

go install gorm.io/gen/tools/gentool@latest

用法

gentool -hUsage of gentool:-c string配置文件名、默认值 “”、命令行选项的优先级高于配置文件。 -db string指定Driver,默认值“mysql”,referer:https://gorm.io/docs/connecting_to_the_database.html-dsn string用于连接数据库的DSN reference: https://gorm.io/docs/connecting_to_the_database.html-fieldNullable当字段允许空时用指针生成-fieldWithIndexTag生成带有gorm index 标签的字段-fieldWithTypeTag生成带有gorm type标签的字段-modelPkgName string生成模型代码包名称。-outFile stringGenrated 查询代码文件名称,默认值:gen.go-outPath string指定输出目录(默认 “./dao/query”)-tables string指定要生成的表名称,默认所有表。-onlyModel指生成Models不生成对应的query-withUnitTest生成单元测试,默认值 false, 选项: false / true-fieldSignabledetect integer field's unsigned type, adjust generated data type

Example

gentool -dsn "user:pwd@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local" -tables "orders,doctor"gentool -c "./gen.tool" # 配置文件像下面
version: "0.1"
database:# consult[https://gorm.io/docs/connecting_to_the_database.html]"dsn : "username:password@tcp(address:port)/db?charset=utf8mb4&parseTime=true&loc=Local"# 选择mysql或者其他引擎,比方sqlserverdb  : "mysql"# 指定要生成的table,流控则全部tables  : "user"# 指定输出目录outPath :  "./dao/query"# 输出的代码,默认gen.gooutFile :  ""# 是否生成单元测试withUnitTest  : false# generated model code's package name# 生成的model的代码的包名modelPkgName  : ""# 使用指针当字段是空的fieldNullable : false# 生成的字段带有gorm tagfieldWithIndexTag : false# 生成的字段时候带有gorm type 标签fieldWithTypeTag  : false

ubuntu将gobin加入到PATH的做法

个人来说,gentool没有被加入到PATH中,这边手动把GOPATH加入到PATH中,我用的是

zsh,所以把环境变量加入到~/.zshrc中,参考下面的命令

Image2

echo 'export PATH=$PATH:~/go/bin' | tee -a ~/.zshrc

现在gentool可以在任意地方被调用了

Image3

实例

在项目根目录新疆gentool文件里面写入内容

version: "0.1"
database:# consult[https://gorm.io/docs/connecting_to_the_database.html]"dsn : "root:root@tcp(127.0.0.1:3306)/school?charset=utf8mb4&parseTime=true&loc=Local"# 选择mysql或者其他引擎,比方sqlserverdb  : "mysql"# 指定要生成的table,流控则全部# 指定输出目录outPath :  "./dao/query"# 输出的代码,默认gen.gooutFile :  ""# 是否生成单元测试withUnitTest  : false# generated model code's package name# 生成的model的代码的包名modelPkgName  : "models"# 使用指针当字段是空的fieldNullable : false# 生成的字段带有gorm tagfieldWithIndexTag : false# 生成的字段时候带有gorm type 标签fieldWithTypeTag  : false

然后使用gentool指定-c

结果如在dao包下生成了对应的models和query

Image4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/162707.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国阿贡国家实验室发布快速自动扫描套件 FAST,助力显微技术「快速阅读」成为可能

「我高兴地在北京市的天安门广场上看红色的国旗升起」 快速阅读一下这个句子,大家可能会发现,只需「我在天安门广场看升旗」几个字,就能概述我们需要的信息,也就是说,无需逐字逐句地阅读,抓住重点即可破译…

Node.js |(五)包管理工具 | 尚硅谷2023版Node.js零基础视频教程

学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚概念介绍📚npm🐇安装npm🐇基本使用🐇生产依赖与开发依赖🐇npm全局安装🐇npm安装指定包和删除…

青翼科技-国产化ARM系列TES720D-KIT

板卡概述 TES720D-KIT是专门针对我司TES720D(基于复旦微FMQL20S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单…

十一、K8S之持久化存储

持久化存储 一、概念 在K8S中,数据持久化可以让容器在重新调度、重启或者迁移时保留其数据,并且确保数据的可靠性和持久性。 持久化存储通常用于程序的状态数据、数据库文件、日志文件等需要在容器生命周期之外的数据,它可以通过各种存储解…

C++ 动态规划。。。

#include <iostream> #include <algorithm> using namespace std; // 定义一个常量&#xff0c;表示无穷大 const int INF 1e9; int dp[1000 2];// 定义一个函数&#xff0c;计算数组中某个区间的和 int sum(int arr[], int start, int end) {int s 0;for (int …

从NetSuite Payment Link杂谈财务自动化、数字化转型

最近在进行信息化的理论学习&#xff0c;让我有机会跳开软件功能&#xff0c;用更加宏大的视野&#xff0c;来审视我们在哪里&#xff0c;我们要到哪去。 在过去20多年&#xff0c;我们的财务软件经历了电算化、网络化、目前处于自动化、智能化阶段。从NetSuite这几年的功能发…

ATE新能源汽车充电桩自动负载测试系统

随着新能源汽车的普及&#xff0c;充电桩的需求也在不断增加&#xff0c;为了确保充电桩的性能和安全性&#xff0c;对其进行负载测试是非常重要的。ATE新能源汽车充电桩自动负载测试系统是一种专门用于检测充电桩性能的设备&#xff0c;它可以模拟各种实际使用场景&#xff0c…

C++模板编程与泛型编程之函数模板

文章目录 函数模板(第一部分)定义函数模板使用函数模板样例 两阶段翻译 Two-Phase Translation模板的编译和链接问题 多模板参数引入额外模板参数作为返回值类型让编译器自己找出返回值类型将返回值声明为两个模板参数的公共类型样例 默认模板参数样例 重载函数模板模板函数特化…

【八股哪背的完】Redis我先背这点儿,够用!

Redis篇 数据类型及其业务场景 字符串&#xff08;String&#xff09; 字符串类型是最基本的数据类型&#xff0c;value 最多可以容纳的数据长度是 512M。 存储任意类型的数据&#xff0c;包括数字、文本等。适用于缓存、计数器、分布式锁等场景。共享 Session 信息 哈希&am…

人,要懂得享受孤独

喜欢在如水的月光下&#xff0c;望一轮洁白的皓月&#xff0c; 喜欢在清寂的夜晚&#xff0c;看那星光流转倏忽间的变幻&#xff0c;牵动心中万千情怀。 独享这份清幽&#xff0c;遐想那月中寻桂子的浪漫。 这个世界太喧闹&#xff0c;偶尔&#xff0c;需要关一关窗&#xff0c…

vue3生命周期源码详解

钩子函数的特点 Vue 生命周期钩子函数是在组件生命周期中执行的特定函数。 这些钩子函数允许你在组件不同的生命周期阶段插入自定义的逻辑代码。 Vue 提供了一组预定义的生命周期钩子函数&#xff0c;每个钩子函数在组件生命周期的不同阶段被调用。 源码中如何注册、实现钩子函…

跨境电商商城源码,助力商家全球布局(多语言切换\多货币转换\多商户入驻)

今天&#xff0c;我们要给大家介绍一款强大且多元化的跨境电商解决方案——WoShop跨境电商源码!这款源码拥有许多令人惊叹的功能&#xff0c;其中最引人注目的就是支持多语言切换、多货币转换以及多商户入驻! 设想一下&#xff0c;你是一个跨境电商的卖家&#xff0c;你的业务遍…