- 基本介绍
- 数据结构
- 使用
g.DB
与gdb.New
、gdb.Instance
的区别
基本介绍
gf
框架的ORM
功能由gdb
模块实现,最大的特色在于底层默认使用了map
数据类型作为基础的数据表记录载体,而非使用struct
,开发者无需预先定义数据表记录struct
便可直接对数据表记录执行各种操作。这样的设计赋予了开发者更高的灵活度和简便性,当然gdb
也支持数据表记录
与struct
的映射转换,详细介绍请查看后续【ORM高级特性】章节。
gdb
数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭,因此链接对象不用的时候不需要显式使用Close
方法关闭数据库连接。这也是gdb
数据库模块人性化设计的地方,方便开发者使用数据库而无需手动维护大量的数据库链接对象。
注意:为提高数据库操作安全性,在ORM操作中不建议直接将参数拼接成SQL执行,又或者将参数拼接称字符串执行,建议尽量使用预处理的方式(充分使用?
占位符)来传递SQL参数。
接口文档:https://godoc.org/github.com/gogf/gf/g/database/gdb
数据结构
为便于数据表记录的操作,ORM定义了5种基本的数据类型:
type Map map[string]interface{} // 数据记录
type List []Map // 数据记录列表
type Value *gvar.Var // 返回数据表记录值
type Record map[string]Value // 返回数据表记录键值对
type Result []Record // 返回数据表记录列表
Map
与List
用于ORM操作过程中的输入参数类型(与全局类型g.Map
和g.List
一致,在项目开发中常用g.Map
和g.List
替换);Value/Record/Result
用于ORM操作的结果数据类型,具体说明请查看【ORM结果处理】章节;
使用g.DB
与gdb.New
、gdb.Instance
的区别
获取数据库操作对象有三种方式,一种是使用g.DB
方法,一种是使用原生gdb.New
方法,还有一种是使用包原生单例方法gdb.Instance
,而第一种是推荐的使用方式。这三种方式的区别如下:
g.DB
对象管理方式获取的是单例对象,整合了配置文件的管理功能,支持配置文件热更新;gdb.New
是创建一个新的数据库对象(非单例),无法使用配置文件,需要使用包配置管理方法进行配置;gdb.Instance
是包原生单例管理方法,需要结合配置方法一起使用,通过分组名称(非必需)获取对应配置的数据库单例对象;- 其他使用无差别;