Golang Gorm 创建HOOK

2023-11-09

创建的时候,在插入数据之前,想要做一些事情。钩子函数比较简单,就是实现before create的一个方法。

package main

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

type Student struct {
	ID    int64
	Name  string `gorm:"size:6"`
	Age   int
	Email *string
}

func (*Student) TableName() string {
	return "student"
}

func (student *Student) BeforeCreate(tx *gorm.DB) error {
	email := "1239683670@qq.com"
	student.Email = &email
	//确定要添加的话就返回nil
	return nil
}

func main() {
	dsn := "root:7PXjAkY!&nlR@tcp(192.168.11.128:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
	db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	db.AutoMigrate(&Student{})


	db.Create(&Student{
		Name: "hh",
		Age:  1,
	})

}


mysql> select * from student;
+----+-------+------+-------------------+
| id | name  | age  | email             |
+----+-------+------+-------------------+
|  1 | lucas |   30 | NULL              |
|  3 | hh    |    1 | 1239683670@qq.com |
+----+-------+------+-------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang Gorm 创建HOOK 的相关文章

  • go struct{} 空结构体的特点和作用

    空结构体的特点和作用 参考代码 package main import fmt unsafe func main empStruct 空结构体的实例和作用 func empStruct 空结构体的特点 1 不占用内存 2 地址不变 var
  • Golang教程:(十六)结构体

    原文 https golangbot com structs 欢迎来到Golang系列教程的第十六篇 什么是结构体 结构体 struct 是用户自定义的类型 它代表若干字段的集合 有些时候将多个数据看做一个整体要比单独使用这些数据更有意义
  • 七. go 常见数据结构实现原理之 反射

    目录 一 golang 是如何实现反射的 如何比较两个对象完全相等 一 golang 是如何实现反射的 参考博客Go 语言问题集 Go Questions Go 语言在 reflect 包里定义了各种类型 实现了反射的各种函数 通过它们可以
  • golang之跨语言ipc通信

    1 golang之跨语言ipc通信 文章目录 1 golang之跨语言ipc通信 1 1 unix domain Socket unix域套接字 介绍 1 2 IPC SOCKET通信 1 2 1 函数及地址定义介绍 1 2 2 UNIX
  • go字符串详解

    文章目录 摘要 1 byte和rune类型 2 字符串 string 3 练习 反转字符串 摘要 go字符串结构体包含 指向底层存储数组的指针 字符串长度 字符串按utf 8将字符编码成二进制数 然后存储在byte数组中 因为utf 8编码
  • Go项目部署及所遇问题

    小聊 本次小白给大家带来Golang项目部署操作以及个人所遇问题和解决它们的方法 依然是一边实操演示一边写文稿 如遇相似问题却存有疑惑可留言 开发环境是Window 部署环境是Linux 开发工具为GoLand 部署服务器为阿里云 1 打包
  • golang: Logrus实现日志打印

    Github https github com sirupsen logrus golang标准库的日志框架非常简单 仅仅提供了print panic和fatal三个函数 对于更精细的日志级别 日志文件分割以及日志分发等方面并没有提供支持
  • go语言基础-----03-----流程控制、函数、值传递、引用传递、defer函数

    1 流程控制 这里只讲 for range 语句 这个关键字 主要用于遍历 用来遍历数组 slice map chan 例如 package main import fmt func main str hello world 中国 for
  • Go切片排序

    Go 语言标准库提供了sort包 用于对切片和用户定义的集合进行排序 具体示例如下 基本排序 package main import fmt sort func main float 从小到大排序 f float64 5 2 1 3 0 7
  • go 进阶 go-zero相关: 七. 拦截器与熔断拦截器

    目录 一 拦截器的基础使用 1 服务端拦截器 2 客户端拦截器 二 拦截器底层底层执行原理 三 go zero默认添加的拦截器 客户端 1 熔断器拦截器 BreakerInterceptor 服务端 一 拦截器的基础使用 在go zero
  • 【golang】error parsing regexp: invalid or unsupported Perl syntax (正则表达式校验密码)

    要在 Go 中编写密码校验规则 确保密码不少于8位且包含数字和字母 你可以使用正则表达式和 Go 的 regexp 包来实现 以下是一个示例代码 错误示范 package main import fmt regexp func valida
  • Go语言包管理(一)

    Go语言中的包 我们在使用其他语言 比如Java Python 都有类似包的概念 Go也不例外 其核心思想即为分组和模块化 人的大脑对庞大和复杂的事情很难掌控 可以对其采用分而治之的策略 使其模块化 从而更容易管理 如下是标准库中net包的
  • Go_接口、多态、接口继承、空接口、类型断言

    接口 接口是把所有具有共性的方法定义在一起 是方法集 任何类型实现了接口中所有的方法 就是实现了这个接口 接口可以实现多态 接口传递的是地址值 接口定义及调用 定义格式 tepe 接口名 interface 方法名 参数 返回值 调用格式1
  • Golang三剑客之Pflag、Viper、Cobra

    如何构建应用框架 想知道如何构建应用框架 首先你要明白 一个应用框架包含哪些部分 在我看来 一个应用框架需要包含以下 3 个部分 命令行参数解析 主要用来解析命令行参数 这些命令行参数可以影响命令的运行效果 配置文件解析 一个大型应用 通常
  • 基于Go语言实现简易Web应用

    目录 前言 Go语言特点 写在使用Go语言实现Web应用前面 创建Web服务器 声明一个结构体操作 加入中间件的使用 使用静态文件服务器 最后 前言 在编程语言中 近几年问世的几个新语言都是非常不错的 比如Go Python Rust等等
  • 深入理解 Go 语言中的接口(interface)

    一 GoLang 接口的定义 1 GoLang 中的接口 在 Go 语言中接口 interface 是一种类型 一种抽象的类型 接口 interface 定义了一个对象的行为规范 只定义规范不实现 由具体的对象来实现规范的细节 实现接口的条
  • 48.Go简要实现令牌桶限流与熔断器并集成到Gin框架中

    文章目录 一 简介 二 限流器与熔断器在微服务中的作用 1 限流器 对某个接口单位时间内的访问量做限制 2 熔断器 当服务连续报错 超过一定阈值时 打开熔断器使得服务不可用 三 具体实现 1 限流器实现逻辑 以令牌桶算法为例 2 限流器集成
  • 【go语言开发】Minio基本使用,包括环境搭建,接口封装和代码测试

    本文主要介绍go语言使用Minio对象存储 首先介绍搭建minio 创建bucket等 然后讲解封装minio客户端接口 包括但不限于 上传文件 下载 获取对象url 最后测试开发的接口 文章目录 前言 Minio docker安装mini
  • 【go语言】error错误机制及自定义错误返回类型

    简介 Go 语言通过内置的 error 接口来处理错误 该接口定义如下 type error interface Error string 这意味着任何实现了 Error 方法的类型都可以作为错误类型 在 Go 中 通常使用 errors
  • go开发--操作mysql数据库

    在 Go 中访问 MySQL 数据库并进行读写操作通常需要使用第三方的 MySQL 驱动 Go 中常用的 MySQL 驱动有 github com go sql driver mysql 和 github com go xorm xorm

随机推荐

  • 使用Keras和深度确定性策略(DDPG)来玩TORCS

    背景 DQN的一大局限性是输出 动作是离散的 而车辆转向是连续的 使DQN适应连续域的一种明显方法是简单的离散化操作空间 然而只是简单地离散化操作空间会受到 维度的诅咒 问题 深度确定性策略由三种技术结合 1 确定性策略梯度算法 输出的是每
  • 由用户反映DroidPilot安装之后,License没有同步安装 - 解决办法

    由用户反映DroidPilot安装之后 License没有同步安装 这个原因是在有些机器的注册表无法正常设置License项引起的的 只需手工重新安装一次License就可以解决 方法如下 1 启动cmd命令行 2 进入脚本设计器安装目录
  • 只保留日期_如何在excel中自动填写日期,以5分钟为增量,批量生成数字

    日期和时间可以自动填充 Excel中的数字除外 日期可以按天 月 年和工作日填充 时间可以按小时 分钟和秒递增填充 填写日期的方法有三种 一种是拖拽自动填写 另一种是双击单元格填写手柄自动填写 第三种是用序列填写大量数据 如填写一年 几年甚
  • 【爬虫】JS逆向解决反爬问题系列4——nonce破解

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 本次博客内容将讲解关于nonc
  • a标签禁用

    a 链接 a 以上写法不能实现a标签禁用功能 Can t bind to disabled since it isn t a known property of a 正确写法 a href 链接 a href一定要加 不加实现不了置灰 a
  • Kettle是什么(ETL工具)

    1 Kettle是什么 Kettle是一个开源的ETL工具 全称为Pentaho Data Integration PDI 它可以用于从不同的数据源中提取数据 进行转换和加载到目标数据源中 Kettle支持多种数据源的操作 如关系型数据库
  • 【笔记~】使用js实现搜索排序(el-table)

    直接看代码 div div class serchBox div div
  • TAQS.IM Solo v1.2.11 WiN 中东方韵律合成器

    TAQSIM Solo 不仅准备了虚拟合成与采样播放的多层级混合引擎 还为音乐创作者们带来了大量现代世界音乐中的音色 不仅包括合成音色 还有与世界各地音乐家合作带来的乐器音色 比如弦乐器 TAQSIM Solo 采用了三层级合成器引擎 每个
  • Python3、setuptools、Pip3安装详解

    博客核心内容 1 Python3安装 2 setuptools安装 3 Pip3安装 之所以写这篇博客 也是有很多原因了 每次安装都要从网上各种百度 网上的答案也是各种各样 于是决定好好总结一下 下面是我在安装的过程中参考的几篇博客 附上相
  • nft术语解释

    NFT 爱好者 原文用的是nerds 翻译作书呆子 我感觉不太合理 我写成爱好者 在谈论这个东西时候总是会有一堆让人眼花缭乱的术语 对非圈内人来说会感觉难以理解 这里整理了23个术语解释来帮助你理解 作为nerds的其中之一 我过滤掉了一些
  • Mysql中的日期与时间类型

    MySQL有多种表示日期和时间的数据类型 不同的版本可能有所差异 MySQL8 0版本支持的日期和时间类型主要有 YEAR类型 TIME类型 DATE类型 DATETIME类型和TIMESTAMP类型 YEAR类型通常用来表示年 DATE类
  • Vue Cli3.x-4.x 实现rem适配

    Vue移动端rem适配 1 安装lib flexible和postcss px2rem npm install lib flexible save npm install postcss px2rem save 2 在main js中引入l
  • JavaScript 数组塌陷

    概念 数组塌陷 在对数组进行操作的时候 会使数组的长度产生变化 同时 操作的数组那个项的下一个索引会被跳过 从而造成数组的某项会被跳过 这种叫做数组塌陷现象 例子 let arr 1 2 3 3 3 3 3 3 3 4 5 6 7 8 9
  • Nodejs 快速学习

    1 Nodejs快速入门 1 1 安装 官网 https nodejs org zh cn download 一路next安装即可 cmd查看 是否 安装成功 1 2 什么是Nodejs 注意 ES6语法完全兼容 1 3 第一个Nodejs
  • [python+nltk] 自然语言处理简单介绍和NLTK坏境配置及入门知识(一)

    本文主要是总结最近学习的论文 书籍相关知识 主要是Natural Language Pracessing 自然语言处理 简称NLP 和Python挖掘维基百科Infobox等内容的知识 此篇文章主要参考书籍 Natural Language
  • 恶意URL数据集

    一些URL数据集的收集来源 1 https openphish com feed txt 2 https ransomwaretracker abuse ch blocklist 3 https www phishtank com 4 ht
  • SnackBar 简单使用

    1 简介 Snackbar是Android Support Design Library库中的一个控件 可以在屏幕底部快速弹出消息 比Toast更加好用 可以添加点击行为 多用于结合协调布局使用 CoordinatorLayout impl
  • 全国身份证身份数据库sql(2021最新)

    为方便下载 已经将 sql 文件上传CSDN 链接 http download csdn net download leiflyy 10143794 insert into areazone areazone province city z
  • linux的dirty page回写磁盘过程中是否允许并发写入更新page?

    概述 众所周知Linux内核write系统调用采用pagecache机制加速写入过程 避免write系统调用长时间block应用进程 用户态进程执行write调用的时候 内核只是将用户态buffer copy到内核的pagecache当中
  • Golang Gorm 创建HOOK

    创建的时候 在插入数据之前 想要做一些事情 钩子函数比较简单 就是实现before create的一个方法 package main import gorm io driver mysql gorm io gorm type Student