golang gorm开发架构及怎么写插件
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"golang gorm开发架构及怎么写插件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"golang gorm开发架构及怎么写插件"吧!
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
手机上玩神奇宝贝服务器
自己组装服务器linux
杨浦区常规网络技术服务售后服务
我的世界能造家的服务器
小学网络安全宣传周手抄报
数据库开发技术项目实训
ns更新后暗黑2无法连接服务器
惠网络技术有限公司
电子信息网络安全方向就业
数据库删除操作
哪里能找到软件开发
并行数据库的并行排序伪代码
高级数据库管理英文
电容器厂软件开发
金融高频数据库
手机如何关闭网络安全
捌楼陆网络技术有限公司海南
knime连接服务器文件夹
211网络技术毕业水平
amax服务器
21春学期网络技术与应用
网络安全技术行业发展
软件开发英语学习
清华考研网络安全
iis服务器叫什么名字
小规模纳税人支付软件开发
辽宁时代网络技术服务五星服务
ssm框架批量更新数据库
web服务器代理器
android软件开发算法