GoFrame 教程
GoFrame 数据查询-LeftJoin/RightJoin/InnerJoin
LeftJoin/RightJoin/InnerJoin LeftJoin左关联查询; RightJoin右关联查询; InnerJoin内关联查询; 其实我们并不推荐使用…
GoFrame 数据查询-Group/Order/Having
Group/Order分组与排序 Group方法用于查询分组,Order方法用于查询排序。使用示例: // SELECT COUNT(*) total,age FROM `…
GoFrame 数据查询-Union/UnionAll
GoFrame ORM 组件支持Union/UnionAll操作,Union/UnionAll操作符用于连接两个以上的SELECT语句的结果组合到一…
GoFrame 数据查询-子查询特性
ORM组件目前支持常见的三种语法的子查询:Where子查询、Having子查询及From子查询。 Where子查询 我们可以在Where条件中使用子查询语句,示…
GoFrame 模型关联-ScanList
gf的ORM没有采用其他ORM常见的BelongsTo, HasOne, HasMany, ManyToMany这样的模型…
GoFrame 模型关联-With特性
一、设计背景 大家都知道易用性和易维护性一直是goframe一直努力建设的,也是goframe有别其他框架和组件比较大的一点差异。goframe没有采用其他ORM常…
GoFrame 链式操作-对象输入
Data/Where/WherePri/And/Or方法支持任意的string/map/slice/struct/*struct数据类型参数,该特性为gdb提供了很高的…
GoFrame 链式操作-字段过滤
Fields/FieldsEx字段过滤 Fields用于指定需要操作的表字段,包括查询字段、写入字段、更新字段等过滤; FieldsEx用于例外的字段指定,可用于查询字段、写入…
GoFrame 链式操作-事务处理
Model对象也可以通过TX事务对象创建,通过事务对象创建的Model对象与通过DB数据库对象创建的Model对象功能是一样的,只不过前者的所有操作都是基于事务…
GoFrame 链式操作-主从切换
从之前的介绍我们知道gdb支持基于应用层的主从配置以及读写分离,并且所有的特性仅需要通过简单的配置即可实现,gdb内部将会对SQL请求自动地进行主从切换。以下是一个简单…
GoFrame 链式操作-查询缓存
查询缓存 gdb支持对查询结果的缓存处理,常用于多读少写的查询缓存场景,并支持手动的缓存清理。需要注意的是,查询缓存仅支持链式操作,且在事务操作下不可用。 相关方法: type…
GoFrame 链式操作-时间维护
需要注意,该特性仅对链式操作有效。 gdb模块支持对数据记录的写入、更新、删除时间自动填充,提高开发维护效率。为了便于时间字段名称、类型的统一维护,如果使用该特性,我们约定: …
GoFrame 链式操作-Handler特性
Handler特性允许您轻松地复用常见的逻辑。 示例1,查询 func AmountGreaterThan1000(m *gdb.Model) *gdb.Model { ret…
GoFrame 链式操作-悲观锁&乐观锁
悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到…
GoFrame 数据库ORM-方法操作
方法操作 方法操作用于原生SQL执行,相对链式操作更偏底层操作一些,在ORM链式操作执行不了太过于复杂的SQL操作时,可以交给方法操作来处理。 接口文档: h…
GoFrame 数据库ORM-事务处理
使用GoFrame ORM组件进行事务操作非常简便、安全,可以通过两种操作方式来实现。 常规操作:通过Begin开启事务之后会返回一个事务操作对象*gdb.TX…
GoFrame 数据库ORM-时区处理
基本介绍 这个问题由于大家问得比较多,因此单独开了一个章节详细介绍一下ORM中的时区处理是怎么一回事。我们这里以MySQL数据库为基础来介绍时区转换的事情,本地时区我们设定…
GoFrame 高级特性-调试模式
为便于开发阶段调试,GoFrame ORM支持调试模式,可以通过Debug配置文件配置项或者SetDebug配置方式开启调试模式, 随后任何的数据库…
GoFrame 高级特性-日志输出
日志输出往往是打印一些调试或者SQL语句,日志对象可以通过SetLogger/GetLogger方法来设置,也可以通过配置文件来做配置。以下是一个开启了日志输出的配置示例:…
GoFrame 高级特性-字段映射
在对数据进行写入、更新使用诸如Fields/Data/Scan方法时,如果给定的参数为map/struct类型,给定参数的键名/属性名称将会自动按照忽略大小写及特殊字符的方…