golang gorm开发架构及怎么写插件
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"golang gorm开发架构及怎么写插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"golang gorm开发架构及怎么写插件"吧!
千家信息网最后更新 2026年11月03日golang gorm开发架构及怎么写插件
本篇内容主要讲解"golang gorm开发架构及怎么写插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"golang gorm开发架构及怎么写插件"吧!
1. 开发
1.1. 架构
Gorm使用可链接的API,*gorm.DB是链的桥梁,对于每个链API,它将创建一个新的关系。
db, err := gorm.Open("postgres", "user=gorm dbname=gorm sslmode=disable")// 创建新关系db = db.Where("name = ?", "jinzhu")// 过滤更多if SomeCondition { db = db.Where("age = ?", 20)} else { db = db.Where("age = ?", 30)}if YetAnotherCondition { db = db.Where("active = ?", 1)}当我们开始执行任何操作时,GORM将基于当前的*gorm.DB创建一个新的*gorm.Scope实例
// 执行查询操作db.First(&user)
并且基于当前操作的类型,它将调用注册的creating, updating, querying, deleting或row_querying回调来运行操作。
对于上面的例子,将调用querying,参考查询回调
1.2. 写插件
GORM本身由Callbacks提供支持,因此您可以根据需要完全自定义GORM
1.2.1. 注册新的callback
func updateCreated(scope *Scope) { if scope.HasColumn("Created") { scope.SetColumn("Created", NowFunc()) }}db.Callback().Create().Register("update_created_at", updateCreated)// 注册Create进程的回调1.2.2. 删除现有的callback
db.Callback().Create().Remove("gorm:create")// 从Create回调中删除`gorm:create`回调1.2.3. 替换现有的callback
db.Callback().Create().Replace("gorm:create", newCreateFunction)// 使用新函数`newCreateFunction`替换回调`gorm:create`用于创建过程1.2.4. 注册callback顺序
db.Callback().Create().Before("gorm:create").Register("update_created_at", updateCreated)db.Callback().Create().After("gorm:create").Register("update_created_at", updateCreated)db.Callback().Query().After("gorm:query").Register("my_plugin:after_query", afterQuery)db.Callback().Delete().After("gorm:delete").Register("my_plugin:after_delete", afterDelete)db.Callback().Update().Before("gorm:update").Register("my_plugin:before_update", beforeUpdate)db.Callback().Create().Before("gorm:create").After("gorm:before_create").Register("my_plugin:before_create", beforeCreate)1.2.5. 预定义回调
GORM定义了回调以执行其CRUD操作,在开始编写插件之前检查它们。
Create callbacks
Update callbacks
Query callbacks
Delete callbacks
Row Query callbacks Row Query callbacks将在运行Row或Rows时被调用,默认情况下没有注册的回调,你可以注册一个新的回调:
func updateTableName(scope *gorm.Scope) { scope.Search.Table(scope.TableName() + "_draft") // append `_draft` to table name}db.Callback().RowQuery().Register("publish:update_table_name", updateTableName)到此,相信大家对"golang gorm开发架构及怎么写插件"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
插件
架构
开发
查询
内容
更多
学习
运行
实用
更深
例子
兴趣
函数
实例
实用性
实际
情况
操作简单
方法
朋友
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技名片
为想互联网科技怎么样
科技类互联网
互联网金融 科技金融
互联网 科技创业
奇酷互联网科技公司
互联网与未来科技
互联网金融科技创新
美国互联网黑科技
互联网科技大会案例
科技类的互联网平台
金融科技和互联网金融
四个字互联网科技公司取名
互联网和黑科技的看法
民营互联网公司国防科技
中科明德北京互联网科技
美国互联网科技实力
领航科技大厦互联网公司
利用互联网等科技手段
株洲百竞科技的互联网营销顾问
疫情对互联网科技公司影响
镁科技互联网资讯平台
联恩商钥互联网科技有限公司
广州恒生互联网科技有限
宁夏众和广鑫互联网科技有限公司
互联网科技和信息
本届互联网大会上的黑科技
全球科技与互联网公司市值变化
求路客互联网科技电话
陕西彩京云互联网科技有限公司