Goweb---Gorm操作数据库(二)

news2024/11/26 3:59:40

Gorm允许用户自己自定义钩子操作,使用这些钩子操作,可以在增删改查操作前进行相关的操作和检验,它会在创建、更新、查询、删除时自动被调用。如果任何回调返回错误,GORM 将停止后续的操作并回滚事务。

自定义钩子函数
package main

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type User struct {
	ID       int    `gorm:"column:id"`
	Name     string `gorm:"column:name"`
	Age      int    `gorm:"column:age"`
	Birthday string `gorm:"column:birthday"`
}

func (u *User) BeforeCreate(tx *gorm.DB) error {
	
	fmt.Println("BeforeCreate user : ", u.Name)
	return nil
}
func main() {

	dsn := "root:828924@tcp(127.0.0.1:3306)/user?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		fmt.Println("连接数据库失败:", err)
	}

	db.AutoMigrate(&User{})

	user := User{
		Name:     "张三",
		Age:      20,
		Birthday: "2000-01-01",
	}
	db.Create(&user)
}

func (u *User) BeforeCreate(tx *gorm.DB) error {
fmt.Println("BeforeCreate user : ", u.Name)
return nil
}
这是自定义的钩子函数,在用户执行db.Create(&user)前会执行BeforeCreate函数

在这里插入图片描述
其他相关操作都可以类推或者看相关文档
下面是Gorm的官方文档:
https://gorm.io/zh_CN/docs/create.html

跳过钩子函数:

可以通过使用SkipHooks会话模式跳过钩子函数

具体操作:

将db.Create(&user) 改为 db.Session(&gorm.Session{SkipHooks: true}).Create(&user)
在操作前将不会调用钩子函数。

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

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

相关文章

充电宝哪个牌子性价比高?2024年充电宝推荐!7款好用充电宝推荐

近年来,充电宝爆炸、自燃等安全事故屡见不鲜,给人们的生命财产安全带来了严重的威胁。比如 2023 年 1 月,广西桂平的一自建民房凌晨突发大火,经初步调查,起火原因就是充电宝发生短路。2024 年 2 月 19 日晚&#xff0c…

如何在项目申报中实施精细化管理?

项目申报作为企业获取资源、拓展市场、推动创新的关键环节,其成功与否往往直接关系到企业的战略发展。而要在众多申报者中脱颖而出,实现项目申报的成功,精细化管理成为关键因素之一。精细化管理强调的是对项目申报全过程的每一个细节进行精准…

2024 年 8 月公链行业研报:Layer 1、比特币 Layer 2 和以太坊 Layer 2 趋势分析

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 公链研究页面 8 月,加密货币市场波动剧烈,比特币和以太坊均遭遇了明显下跌。Layer 1 区块链普遍遭受市场颓势,然而,Tron 却逆势…

开源链动 2+1 模式 S2B2C 商城小程序助力品牌实现先营后销与品效合一

摘要:本文探讨了在当今市场环境下,如何做到先营后销、品效合一。通过研究社区用户喜好,打造适合家庭消费的商品,并结合开源链动 21 模式 S2B2C 商城小程序,实现品牌的精准定位、创新包装以及小规格产品供应&#xff0c…

单片机——ADC采样

1、什么是ADC采样? ADC是指将模拟信号转换成数字信号的过程。通俗理解ADC采样就是采集电路中的电压,通过数值的方式表现出来。以STM32F103系列为例,它可以反应0~4095,换句话说,它采集的电压数值上表现为0~4095&#xf…

文心快码获2024北京信息通信行业网络安全产品优秀应用

日前,2024北京互联网大会在京举办。在“网络安全与数据保护”分论坛上,百度智能代码助手文心快码Baidu Comate荣获北京信息通信行业网络安全产品优秀应用案例。  本场论坛聚焦“共筑安全底座 服务社会民生”主题,共商北京数字经…

江科大51单片机

文章目录 led灯led点亮led闪烁流水灯 独立按键按键点灯按键消抖按键实现二进制流水灯按键实现流水灯 数码管静态数码管显示动态数码管显示 矩阵键盘定时器/中断串口通信led点阵屏DS1302实时时钟蜂鸣器AT24C02DS18B20LCD1602直流电机驱动AD/DA红外遥控 led灯 创建项目&#xff…

2024自学网络安全的三个必经阶段(含路线图)

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等 一系列政策/法规/标准的持续落地 ,网络安全行业地位、薪资随之水涨船高。 未来3-5年,是安全行业的黄金发展期,提前踏…

CoT让Transformer打破推理极限的讨论

论文简要 题目:Chain of Thought Empowers Transformers to Solve Inherently Serial Problems Denny Zhou等人提出的中间推理token,跟o1的核心技术CoT非常相似。 传统的Transformer模型的致命弱点,就是擅长并行计算,但不擅长串…

动物关键点数据集-yolov8 pose动物关键点识别-动物姿态估计-keypoints(代码+数据集)

跨域适应于动物姿态估计 概览 本文介绍了一个专门用于动物姿态估计的数据集,该数据集包含了五个不同种类的动物:狗、猫、牛、马和羊。整个数据集中共包含超过6000个实例,分布在4000多张图像上。此外,数据集还为另外七种动物提供…

QT创建线程,QT多线程的创建和使用,QT线程池

一、在Qt中创建多线程的原因和优势 1. **UI响应性:** - 在单线程模型中,如果需要执行长时间运行的任务(如网络请求、文件I/O、计算密集型操作等),这将会阻塞主线程,导致UI无响应。通过在单独的线程中执…

分布式框架 - ZooKeeper

一、什么是微服务架构 1、单体架构 顾名思义一个软件系统只部署在一台服务器上。 ​ 在高并发场景中,比如电商项目,单台服务器往往难以支撑短时间内的大量请求,聪明的架构师想出了一个办法提高并发量:一台服务器不够就加一台&am…

Bottleneck、CSP、DP结构详细介绍

文章目录 前言一、BottleneckDarknetBottleneck 二、CSPCSP思想pp-picodet中的CSPLayer DP卷积 前言 本篇文章详细介绍了三种神经网络中常见的结构,bottleneck、CSP、DP,并附上了代码加深理解。 一、Bottleneck Bottleneck出现在ResNet50/101/152这种…

矩阵特征值怎么求?矩阵特征值计算器来帮你

大家好,这里是效率办公指南! 📚今天我们要探讨一个数学和编程领域中经常遇到的问题——矩阵特征值的计算方式,以及如何计算一个2x2矩阵的特征值。无论你是数学爱好者,还是编程高手,这个主题都可能对你有所…

29 C 语言中的随机数实现:rand 与 srand

目录 1 为什么需要随机数? 1.1 背景介绍 1.2 应用场景 2 C 语言实现随机数 2.1 rand() 函数 2.1.1 函数原型 2.1.2 功能说明 2.1.3 案例演示 2.2 srand() 函数 2.2.1 函数原型 2.2.2 功能说明 2.2.3 案例演示 2.3 指定范围的随机数 2.3.1 获…

为什么 qt 成为 c++ 界面编程的第一选择?

一、前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C界面都是基于MFC,也做过5年左右。当时为什么会从MFC转到QT,主要原因是MFC开发界面想做得好看一些十分困难,引用第…

hexo github部署,通过域名访问你的博客

hexo github部署,通过域名访问你的博客 hexo 常用命令hexo github 部署 在部署之前,了解一下hexo的常用命令 hexo 常用命令 hexo new "My New Post" # 新建文章 hexo n "My New Post"hexo generate # 生成静态文件 hexo ghexo serv…

【CTF】Nginx日志注入

Nginx日志注入: 日志包含漏洞的成因还是服务器没有进行严格的过滤 ,导致用户可以进行任意文件读取,但是前提是服务器需要开启了记录日志的功能才可以利用这个漏洞。 对于Apache,日志存放路径:/var/log/apache/access.l…

【论文阅读】FedBABU:TOWARD ENHANCED REPRESENTATION FOR FEDERATED IMAGE CLASSIFICATION

算法流程: 训练过程中冻结客户端的头部参数,只训练主体参数。训练完之后再在客户端本地跑几个epoch微调一下(文章推荐5个)。 由于该算法与FedPer思路过于相似,故读完后跑了个实验。 FedPer:训练过程中只聚合主体参数。…

Redis --- redis事务和分布式事务锁

redis事务基本实现 Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务(transaction)功能。 > MULTI OK > SET USER "Guide哥" QUEUED > GET USER QUEUED > EXEC 1) OK 2) "Guide哥"使用 MULTI命令后可以输入…