golang gorm开发架构及怎么写插件
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,本篇内容主要讲解"golang gorm开发架构及怎么写插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"golang gorm开发架构及怎么写插件"吧!
千家信息网最后更新 2025年11月14日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安全错误
数据库的锁怎样保障安全
太仓正规网络技术费用
为什么现在软件开发很便宜
山西软件开发服务检测中心
esxi家用服务器
正确创建数据库sql语句
徐州工业网络技术应用
免费 web服务器
湖州职业技术学院网络技术
日本国家网络安全与防御
浙江互联网络技术咨询服务
头部跟踪软件开发
台湾vpn服务器地址可用
湘潭棋牌软件开发
成都域百果互联网科技
网络技术服务业账务处理
安徽多功能软件开发厂家报价
专业网络安全工作方案
银行网络安全宣传主题党日
南京京凌网络技术有限公司
学生网络安全意识淡薄例子
游戏服务器会影响流畅吗
魔兽世界 pvp服务器
浙江互联网络技术咨询服务
网络安全营收排名
数据库系统概念课程视频
软件开发技术协议
ab是数据库的意思吗
开发数据库 报价
无锡重型软件开发大全
网络技术主讲专题