调试模式

随后在ORM的操作过程中,所有的执行语句将会打印到终端进行展示。同时,我们可以通过以下方法获得调试过程中执行的所有SQL语句:

  1. // 获取已经执行的SQL列表
  2. func (db DB) GetQueriedSqls() []*Sql

使用示例:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/database/gdb"
  5. )
  6. var db gdb.DB
  7. // 初始化配置及创建数据库
  8. func init () {
  9. gdb.AddDefaultConfigNode(gdb.ConfigNode {
  10. Host : "127.0.0.1",
  11. Port : "3306",
  12. Pass : "123456",
  13. Name : "test",
  14. Type : "mysql",
  15. Role : "master",
  16. Charset : "utf8",
  17. })
  18. db, _ = gdb.New()
  19. }
  20. func main() {
  21. db.SetDebug(true)
  22. // 执行3条SQL查询
  23. for i := 1; i <= 3; i++ {
  24. db.Table("user").Where("uid=?", i).One()
  25. }
  26. // 构造一条错误查询
  27. db.Table("user").Where("no_such_field=?", "just_test").One()

执行后,输出结果如下:

日志输出

日志输出请查看ORM的使用配置章节。

类型识别

这一特性对于需要将查询结果进行编码,并通过例如方式直接返回给客户端来说将会非常友好。

类型转换

gdb的数据记录结果(Value)支持非常灵活的类型转换,并内置支持常用的数十种数据类型的转换。Result/Record的类型转换请查看后续【】章节。

使用示例:

  1. # 商品表
  2. CREATE TABLE `goods` (
  3. `title` varchar(300) NOT NULL COMMENT '商品名称',
  4. `price` decimal(10,2) NOT NULL COMMENT '商品价格',
  5. ...
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

其次,数据表中的数据如下:

  1. id title price
  2. 1 IPhoneX 5999.99

最后,完整的示例程序如下:

执行后,输出结果为:

  1. goods id: 1
  2. goods title: IPhoneX
  3. goods proce: 5999.99

继承支持

gdb模块针对于struct继承提供了良好的支持,包括参数传递、结果处理。例如:

  1. type Base struct {
  2. Uid int `orm:"uid"`
  3. CreateTime string `orm:"create_time"`
  4. }
  5. type User struct {
  6. Base
  7. Passport string `orm:"passport"`
  8. Password string `orm:"password"`
  9. Nickname string `orm:"nickname"`
  10. }