网站建站和推广服务公司,深圳关键词首页排名,一般找人做网站多少钱,二级域名注册平台Gorm允许用户自己自定义钩子操作#xff0c;使用这些钩子操作#xff0c;可以在增删改查操作前进行相关的操作和检验#xff0c;它会在创建、更新、查询、删除时自动被调用。如果任何回调返回错误#xff0c;GORM 将停止后续的操作并回滚事务。 自定义钩子函数
package ma… Gorm允许用户自己自定义钩子操作使用这些钩子操作可以在增删改查操作前进行相关的操作和检验它会在创建、更新、查询、删除时自动被调用。如果任何回调返回错误GORM 将停止后续的操作并回滚事务。 自定义钩子函数
package mainimport (fmtgorm.io/driver/mysqlgorm.io/gorm
)type User struct {ID int gorm:column:idName string gorm:column:nameAge int gorm:column:ageBirthday string gorm:column:birthday
}func (u *User) BeforeCreate(tx *gorm.DB) error {fmt.Println(BeforeCreate user : , u.Name)return nil
}
func main() {dsn : root:828924tcp(127.0.0.1:3306)/user?charsetutf8mb4parseTimeTruelocLocaldb, 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) 在操作前将不会调用钩子函数。