当前位置: 首页 > article >正文

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

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.kler.cn/news/323995.html

相关文章:

  • project_object_model_3d
  • ES6中迭代器与生成器知识浅析
  • Python知识点:如何使用Python与.NET进行互操作(IronPython)
  • ubuntu 安装harbor
  • 解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
  • HI3520DV510 22AP80/SS522V100 芯片及开发板
  • 认识 Linux操作系统
  • 新疆交投路桥桥梁公司:向“新”求“质”,积蓄发展新势能
  • Tkinter制作登录界面以及登陆后页面切换(一)
  • Linux 基本指令的学习
  • 【深度学习】03-神经网络 3-3 梯度下降的优化方法-动量算法Momentum
  • mysql数据库sql语句总结
  • 综合业务区的数字化创新与智能化蓝图
  • GitLab CI/CD脚本入门
  • 04_OpenCV图片缩放
  • 先进制造aps专题二十六 基于强化学习的人工智能ai生产排程aps模型简介
  • Oracle 数据库安装和配置指南(新)
  • 进阶SpringBoot之分布式系统与 RPC 原理
  • 数据结构:成员运算符(.)+ 指向运算符(->)
  • 创建javaWeb项目(详细版本)2021年2月
  • 【递归】8. leetcode 671 二叉树中第二小的节点
  • 1. IP地址介绍
  • SpringCloud无法注册Nacos和配置中心
  • localhost 自动被 redirect 到 https 地址的问题
  • 多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)
  • 企业级Windows server服务器技术(1)
  • Token: 数据库、存储系统和API安全的应用
  • pcs集群表决盘故障导致主机reboot
  • @Transactional导致数据库连接数不够
  • 在pycharm中怎样debug一个网页程序