为了将数据库驱动与框架主库解耦,从v2.1版本开始,所有的数据库驱动都需要通过社区包手动引入。
v2.1
数据库驱动的安装和引入请参考:https://github.com/gogf/gf/tree/master/contrib/drivers
GoFrame框架的ORM功能由gdb模块实现,用于常用关系型数据库的ORM操作。
GoFrame
ORM
gdb
gdb数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭,因此链接对象不用的时候不需要显式使用Close方法关闭数据库连接。
Close
注意:为提高数据库操作安全性,在ORM操作中不建议直接将参数拼接成SQL字符串执行,建议使用预处理的方式(充分使用?占位符)来传递SQL参数。gdb的底层实现中均采用的是预处理的方式处理开发者传递的参数,以充分保证数据库操作安全性。
SQL
?
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb
GoFrame ORM组件具有以下显著特点:
GoFrame ORM
OpenTelemetry
Scan
Map/Struct
nil
sql.ErrNoRows
Map/Struct/Slice
DAO
Model/DAO
DryRun
Handler
GoFrame ORM Features
GoFrame ORM Dependencies
g.DB
gdb.New
gdb.Instance
获取数据库操作对象有三种方式,一种是使用g.DB方法(推荐),一种是使用原生gdb.New方法,还有一种是使用包原生单例方法gdb.Instance,而第一种是推荐的使用方式。这三种方式的区别如下:
有这么多对象获取方式原因在于GoFrame是一个模块化设计的框架,每个模块皆可单独使用。
New
db, err := gdb.New(gdb.ConfigNode{ Link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test", })
// 获取默认配置的数据库对象(配置名称为"default") db := g.DB() // 获取配置分组名称为"user"的数据库对象 db := g.DB("user") // 使用原生单例管理方法获取数据库对象单例 db, err := gdb.Instance() db, err := gdb.Instance("user")