golang的多表联合orm

项目截图

1.数据库连接配置 DbConfigUtil.go

package configimport (
"fmt"
_ "github.com/go-sql-driver/mysql"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
)var GormDb *gorm.DBfunc init() {var err errorsqlStr := "root:123456@tcp(localhost:3306)/ry?charset=utf8mb4&parseTime=true&loc=Local"// 关于配置可以参考 https://gorm.io/zh_CN/docs/gorm_config.htmlGormDb, err = gorm.Open(mysql.Open(sqlStr), &gorm.Config{Logger: logger.Default.LogMode(logger.Info),//DisableForeignKeyConstraintWhenMigrating: true, // 禁止创建外键NamingStrategy: schema.NamingStrategy{ // 给创建表时候使用的SingularTable: true,// 全部的表名前面加前缀//TablePrefix: "mall_",},})if err != nil {fmt.Println("数据库连接错误", err)return}
}

2.实体类以及 orm关系定义

UserController.go

package entityimport "gin/config"//多表 orm
//https://blog.csdn.net/kuangshp128/article/details/121139091//用户表  sys_user
type SysUserEntity struct {UserId     int    `gorm:"column:user_id"`UserName   string `gorm:"column:user_name"`NickName   string `gorm:"column:nick_name"`DeptId   string `gorm:"column:dept_id"`sex   string `gorm:"column:sex"`
}//单位表 sys_dept
type SysDeptEntity struct {DeptId     int    `gorm:"column:dept_id"`ParentId   string `gorm:"column:parent_id"`DeptName   string `gorm:"column:dept_name"`CreateBy   string `gorm:"column:create_by"`UpdateTime   string `gorm:"column:update_time"`
}func (SysUserEntity) TableName() string {return "sys_user"
}
func (SysDeptEntity) TableName() string {return "sys_dept"
}func init() {config.GormDb.AutoMigrate(&SysUserEntity{}, &SysDeptEntity{})
}

3.接口

UserController.go


/***
1.多表 联合 orm
*/
func GetByUserJoinList(c *gin.Context) {//申明新对象user := &entity.SysUserEntity{}//获取分页参数pageNum := c.Query("pageNum")pageSize := c.Query("pageSize")fmt.Println("分页参数分别为 :" + pageNum + "|" + pageSize)list := dao.GetByUserJoinList(c, (*entity.SysUserEntity)(user))i := len(list)fmt.Print(i)common.ReturnSucess(c, 200, "查询成功", list, int64(len(list)))
}

4.实现


//多表联合orm
func GetByUserJoinList(c *gin.Context, user *entity.SysUserEntity) []map[string]interface{} {//查收过滤条件拼装// var userName = user.UserName//申明一个数组//var userList []*Uservar resultList []map[string]interface{}err := config.GormDb.Model(&entity.SysUserEntity{}).Table("sys_user as user").Select("user.user_id as deptId", "user.user_name as userName", "user.nick_name nickName", "dept.dept_name as deptName").Joins("LEFT JOIN sys_dept as dept on user.dept_id = dept.dept_id").Where("1 = 1").Scan(&resultList).Errorif err != nil {log.Println("查询用户失败,原因:", err)// 根据具体错误情况进行处理,比如记录日志、返回错误信息给调用者等errToJson := MapToJson(err)//主要错误信息提取common.ReturnError(c, 500, /*err*/ errToJson, resultList, int64(len(resultList)))panic("代码执行异常,不会进行下一步代码逻辑的调用,以及返回")}return resultList
}

5.正确返回数据截图

6.错误时的异常定义及返回

7.window环境打包成 .exe文件

 在  mian.go 文件目录下  执行 go build main.go

7.2 运行打包完的

7.3 打包完的服务测试

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

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

相关文章

Chromium 中chrome.topSites扩展接口定义c++

一、chrome.topSites 使用 chrome.topSites API 访问新标签页上显示的热门网站(即最常访问的网站)。不包括用户自定义的快捷方式。 权限 topSites 您必须声明“topSites”扩展程序清单中授予使用此 API 的权限。 {"name": "My exten…

在Zetero中调用腾讯云API的输入密钥的问题

也是使用了Translate插件了,但是需要调用腾讯云翻译,一直没成功。 第一步就是,按照这上面方法做:百度、阿里、腾讯、有道各平台翻译API申请教程 之后就是:Zotero PDF translat翻译:申请腾讯翻译接口 主要是…

2-137 基于matlab的sigmoid函数的变步长自适应语音信号增强

基于matlab的sigmoid函数的变步长自适应语音信号增强,与传统LMS相对比,比较不同的变步长函数去噪效果,并基于较好的去噪算法分析不同变步长中参数变化对降噪的影响。程序已调通,可直接运行。 下载源程序请点链接:2-13…

DNS服务部署

第一步:两个服务器恢复快照,预处理、安装软件、设置网卡信息 第二步:主服务端操作,编辑主配置文件设置监听IP。主服务端操作打开区域配置文件,添加如下内容,重点为:允许从服务器的同步请求&…

云效+mqtt实现本地构建和远程自动发版

之前写过一篇jenkinsmqtt实现本地构建和远程自动发版_jenkins远程调用和本地调用-CSDN博客 由于本地搭建jenkins实在太费机器了,这次改用云效搭建。不过云效并没有直接发送mqtt的方法,需要编写中转接口。 中转接口采用go-gin框架实现,代码如…

存储器与寄存器

​​​​​​存储器 存储器(Memory)是计算机中用于存储数据和程序的硬件设备。有了存储器计算机就具有记忆功能。 RAM 随机存取存储器(RAM, Random Access Memory) 是计算机系统中一种重要的内存类型,主要用于临时存储…

T10打卡—数据增强

​​​​​​​ 🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.导入及查看数据 import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False import…

wordpress ripro-v5-8.3开心版主题源码

wordpress 资源下载主题 ripro刚开始出来就风靡很久,这个也是类似子比的一个主题,下载全面,美化包也特别多,此版本为网友投稿开新版本,还是那句话,运营请支持正版授权,提供学习研究而已。 喜欢做…

wps宏代码学习

推荐学习视频:https://space.bilibili.com/363834767/channel/collectiondetail?sid1139008&spm_id_from333.788.0.0 打开宏编辑器和JS代码调试 工具-》开发工具-》WPS宏编辑器 左边是工程区,当打开多个excel时会有多个,要注意不要把…

微信小程序的上拉刷新与下拉刷新

效果图如下&#xff1a; 上拉刷新 与 下拉刷新 代码如下&#xff1a; joked.wxml <scroll-view class"scroll" scroll-y refresher-enabled refresher-default-style"white" bindrefresherrefresh"onRefresh" refresher-triggered&qu…

python之函数总结

函数 对于函数的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 世界级的编程大师Martin Fowler先生曾经说过&#xff1a;“代码有很多种坏味道&#xff0c;重复是最坏的一种&#xff01;”。 为什么使用函数 问题…

Mybatis学习笔记(二)

八、多表联合查询 (一) 多表联合查询概述 在开发过程中单表查询不能满足项目需求分析功能&#xff0c;对于复杂业务来讲&#xff0c;关联的表有几张&#xff0c;甚至几十张并且表与表之间的关系相当复杂。为了能够实业复杂功能业务&#xff0c;就必须进行多表查询&#xff0c…

从0开始的STM32之旅 7 串口通信(I)

现在&#xff0c;我们终于可以做一些有趣的事情了&#xff1a;那就是来一点串口通信了。串口通信在一定程度上可以辅助我们程序的调试&#xff0c;传递信息&#xff0c;以及做其他令人激动的事情。下面我们就来看看如何开始我们的串口通信之旅。 关于数据通信 通信就是在传递…

医院绩效考核管理系统源码,医院如何构建绩效考核体系?

医院绩效考核管理系统作为现代医院管理的重要组成部分&#xff0c;其核心功能旨在提高医院运营效率、优化资源配置、确保医疗服务质量&#xff0c;以及增强医院竞争力。 业务科室绩效考核体系的构建 临床医疗与医技科室绩效考核的设置 临床医疗的绩效考核采用百分制&#xff…

使用DexClassLoader类动态加载插件dex

DexClassLoader类的源码 package dalvik.system;public class DexClassLoader extends BaseDexClassLoader {public DexClassLoader(String dexPath, String optimizedDirectory,String librarySearchPath, ClassLoader parent) {super(dexPath, null, librarySearchPath, par…

国产服务器部署1.获取银河麒麟V10服务器。首先挂gpt数据盘

要做系统国产化&#xff0c;现记录国产化的全过程&#xff1a;银河麒麟V10采用ARM架构&#xff0c;基于Ubuntu 18.04 LTS版本的Linux操作系统。‌‌ #uname -r 看系统是x86还是arm 1.获取银河麒麟V10服务器。首先挂数据盘。 1&#xff09;#lsblk -f vdb为数据盘。需要格式…

Excel:vba实现插入图片

实现的效果&#xff1a; 实现的代码&#xff1a; Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Pic As ObjectDim Name As String 防止表格里面有脏数据Cells.Clear 遍历工作表中的每个图…

性能测试需求分析详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一…

机器学习之fetch_olivetti_faces人脸识别--基于Python实现

fetch_olivetti_faces 数据集下载 fetch_olivetti_faceshttps://github.com/jikechao/olivettifaces sklearn.datasets.fetch_olivetti_faces(*, data_homeNone, shuffleFalse, random_state0, download_if_missingTrue, return_X_yFalse, n_retries3, delay1.0)[source] L…