go项目使用gentool生成model的gen.go问题

news2025/2/27 5:27:51

Gen Tool 是一个没有依赖关系的二进制文件,可以用来从数据库生成结构。

使用方法:

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

在项目根目录,执行连接的数据库中指定某几张表结构生成数据库model层

gentool -dsn "root:123456@tcp(localhost:3306)/go-demo-2025?charset=utf8mb4&parseTime=True&loc=Local" -tables "demo,user" -outPath "./gen_model/dao/query"

操作示例:

image-20250102171013926

生成的model文件如下:

image-20250102170943384

现在遇到的问题:使用此方法,如果只指定其中几个表,那么其它已有的表的gen.go会被覆盖。

比如,现在我再次使用上面的命令,生成一个新的表:

gentool -dsn "root:123456@tcp(localhost:3306)/go-demo-2025?charset=utf8mb4&parseTime=True&loc=Local" -tables "common_config" -outPath "./gen_model/dao/query"

此时,刚才生成的 gen.go 里面之前生成的表的结构体就没有了,程序也就跑不起来了:

image-20250102171300798

出现这个情况,可能是这个工具的一个bug。如果改为生成全部表名,也不太方便,因为有时候其他小伙伴改动了某个表,不能随着当前版本上线,就会很被动。除非每次执行这个命令的时候,都要把之前已经有的数据表名都带上,会很麻烦。

目前暂未找到合适的解决方案,因此改为下面的方式:

在项目根目录下面创建 gen.tool 文件,写入内容如下:

version: "0.1"
database:
  dsn : "root:123456@tcp(localhost:3306)/go-demo-2025?charset=utf8mb4&parseTime=True&loc=Local"
  db  : "mysql"
  tables  : ["demo","user","common_config"]
  outPath :  "./gen_model/dao/query"
  # 默认: gen.go
  outFile :  ""
  # generate unit test for query code
  withUnitTest  : false
  # generated model code's package name
  modelPkgName  : ""
  # generate with pointer when field is nullable
  fieldNullable : false
  # generate field with gorm index tag
  fieldWithIndexTag : false
  # generate field with gorm column type tag
  fieldWithTypeTag  : false

这样一来,如果需要生成新的数据表的model,只需要在 tables : 后面追加你想要新增生成的表名,已有的表名不要动!

然后在项目根目录执行下面的命令就好了:

gentool -c "./gen.tool"

这样生成的多个数据表的model就没有问题了。

image-20250102172120450

参考资料:

https://gorm.io/zh_CN/gen/gen_tool.html
https://insight.xiaoduoai.com/intelligent-frontiers/tech/gorm-use-gentool-tool-to-generate-structure-from-database.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

家政上门小程序如何创建?家政服务怎么能少了小程序帮手

在如今这个“忙到没时间打扫”的时代,家政服务变得越来越受欢迎。为了提高效率、减少沟通成本,很多家政公司都已经开始借助小程序的力量。那么,家政上门小程序到底该如何创建呢?小程序又是如何帮助家政服务更好地满足客户需求的呢?本文将为…

破解密码

rhel8/centos8 重置 root 密码 方法 1 : rd.break 第 1 步 重启系统,在下图所示界面按 e 键 第2步 找到linux这行,末尾空格后 输入 rd.break 第3步 查看,可选步骤 这里 sysroot 是以只读的形式挂载的,所以要以可读可…

本地小主机安装HomeAssistant开源智能家居平台打造个人AI管家

文章目录 前言1. 添加镜像源2. 部署HomeAssistant3. HA系统初始化配置4. HA系统添加智能设备4.1 添加已发现的设备4.2 添加HACS插件安装设备 5. 安装cpolar内网穿透5.1 配置HA公网地址 6. 配置固定公网地址 前言 大家好!今天我要向大家展示如何将一台迷你的香橙派Z…

自学记录鸿蒙API 13:实现多目标识别Object Detection

起步:什么叫多目标识别? 无论是生活中的动物识别、智能相册中的场景分类,还是工业领域的检测任务,都能看到多目标识别的身影。这次,我决定通过学习HarmonyOS最新的Object Detection API(API 13&#xff09…

javaEE-多线程进阶-JUC的常见类

juc:指的是java.util.concurrent包,该包中加载了一些有关的多线程有关的类。 目录 一、Callable接口 FutureTask类 参考代码: 二、ReentrantLock 可重入锁 ReentrantLock和synchronized的区别: 1.ReentantLock还有一个方法&#xff1a…

fpga系列 HDL:ModelSim显示模拟波形+十进制格式数值(临时方法和设置持久化的默认值)

模拟波形 FPGA中使用数字滤波器时,可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。右键波形->Format-> Analog 效果 数值格式显示 不同的数值格式显示:右键波形->Radix-> Decimal 效果…

Linux 中 sysctl 和 systemctl 有什么区别?

sysctl 和 systemctl 是两个不同的命令行工具,它们在 Linux 系统中分别用于不同的目的。理解这两个命令的区别对于系统管理和配置非常重要。 1. sysctl 功能 用途:sysctl 用于动态地修改内核参数,这些参数控制着操作系统的某些行为。配置文…

【ArcGISPro/GeoScenePro】检查并处理高程数据

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…

Redis数据库主要数据结构类型

Redis数据库提供了丰富多样的数据结构类型,以满足不同场景下的数据存储需求。以下是Redis中的主要数据结构类型: 一、五种基础数据结构 字符串(String) 简介:字符串是Redis最基本的数据类型,可以存储字符串…

基于Springboot + vue实现的校园周边美食探索及分享平台

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述 目录 Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Data…

mapbox基础,测面功能实现

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️Turf 框架二、🍀测面功能实现1. ☘️实现思路2. ☘️代码样例一、🍀…

基于下垂控制的构网变换器功率控制【微电网变流器】【Simulink】

目录 主要内容 理论研究 整体模型 PQ计算模块 功率控制模块 PWM反馈模块 结果一览 下载链接 主要内容 该仿真针对微电网中分布式电源接入后产生的谐波影响,除了污染网络外,还会恶化微电网变流器输出电流,为了消除谐波影响&a…

2025差旅平台推荐:一体化降本30%

医药行业因其高度专业化的特点,同时在运营过程中又极为依赖供应链和销售网络,因此差旅管理往往成为成本控制的重要环节。本期,我们以差旅平台分贝通签约伙伴——某知名药企为例,探讨企业如何通过差旅一体化管理,在全流…

【漫话机器学习系列】027.混淆矩阵(confusion matrix)

混淆矩阵(Confusion Matrix) 混淆矩阵是机器学习中评估分类模型性能的一种工具,特别是在多类别分类问题中。它通过对比模型预测结果和真实标签,帮助我们理解模型的分类效果。 1. 混淆矩阵的结构 混淆矩阵通常是一个二维表格&am…

【AIGC】 ChatGPT实战教程:如何高效撰写学术论文引言

💥 欢迎来到我的博客!很高兴能在这里与您相遇! 首页:GPT-千鑫 – 热爱AI、热爱Python的天选打工人,活到老学到老!!!导航 - 人工智能系列:包含 OpenAI API Key教程, 50个…

redis的学习(二)

4 哈希表 哈希类型中的映射关系通常称为field-value,⽤于区分Redis整体的键值对(key-value), 注意这⾥的value是指field对应的值,不是键(key)对应的值, 4.1 操作命令 hset&#xff…

IT运维的365天--024 闲置路由器关闭了dhcp,如何知道它的IP是啥

有时候各种原因,我们关闭了路由器的Dhcp,比如需要获取的无线IP和有线同一个网段的情况。时间久了,如果没做标记,大部分时候就会忘了路由器原来设置的是什么IP,没有路由器的对应IP,自然也无法进路由器后台去…

统信系统设置代理的问题

统信系统设置代理的问题 问题表现方式一方式二 问题表现 统信系统下有系统代理和应用代理两个代理。设置系统代理时,git不能经过代理拉取代码。但是设置应用代理时,可以用git通过代理拉代码。 这是系统代理,在这里设置 ip 端口,…

U盘提示格式化?原因、恢复方案与预防措施全解析

一、U盘提示格式化现象概述 在日常使用U盘的过程中,我们有时会遇到一个令人头疼的问题——U盘插入电脑后,系统却弹出一个提示框,告知我们U盘需要格式化才能访问。这个提示往往伴随着数据的潜在丢失风险,让我们不禁为之心焦。U盘提…