方法操作

接口文档: https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb

本文档的方法列表可能滞后于于代码,详细的方法列表请查看接口文档,以下方法仅供参考。

  1. Query是原始的数据查询方法,返回的是原生的标准库的结果集对象,需要自行解析。推荐使用Get*方法,会对结果自动做解析。
  2. Exec方法用于写入/更新的SQL的操作。
  3. 在执行数据查询时推荐使用Get*系列查询方法。
  4. Insert/Replace/Save方法中的data参数支持的数据类型为:string/map/slice/struct/*struct,当传递为slice类型时,自动识别为批量操作,此时参数有效。

操作示例

  1. db := g.DB()
  2. // 获取配置分组名称为"user-center"的数据库对象
  3. db := g.DB("user-center")
  4. // 使用原生单例管理方法获取数据库对象单例
  5. db, err := gdb.Instance()
  6. db, err := gdb.Instance("user-center")
  7. // 注意不用的时候不需要使用Close方法关闭数据库连接(并且gdb也没有提供Close方法),
  8. // 数据库引擎底层采用了链接池设计,当链接不再使用时会自动关闭

2. 数据写入

  1. list, err := db.GetAll(ctx, "select * from user limit 2")
  2. list, err := db.GetAll(ctx, "select * from user where status=?", g.Slice{1})

4. 数据查询(单条)

  1. r, err := db.Save(ctx, "user", gdb.Map {
  2. "uid" : 1,
  3. "name" : "john",
  4. })

6. 批量操作

其中batch参数用于指定批量操作中分批写入条数数量(默认是10)。

  1. // db.Update/db.Delete 同理
  2. // UPDATE `user` SET `name`='john' WHERE `uid`=10000
  3. r, err := db.Update(ctx, "user", gdb.Map {"name": "john"}, "uid=?", 10000)
  4. // UPDATE `user` SET `name`='john' WHERE `uid`=10000
  5. r, err := db.Update(ctx, "user", "name='john'", "uid=10000")
  6. // UPDATE `user` SET `name`='john' WHERE `uid`=10000
  7. r, err := db.Update(ctx, "user", "name=?", "uid=?", "john", 10000)