常用方法
SQL操作方法,返回原生的标准库sql对象
Query
是原始的数据查询方法,返回的是原生的标准库的结果集对象,需要自行解析。Exec
方法用于写入/更新的SQL
的操作。
Query(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) Exec(ctx context.Context, query string, args ...interface{}) (sql.Result, error) Prepare(ctx context.Context, query string) (*sql.Stmt, error)
数据表记录查询:
- 查询单条记录、查询多条记录、获取记录对象、查询单个字段值(链式操作同理)
- 在执行数据查询时推荐使用
Get*
系列查询方法。
GetAll(ctx context.Context, sql string, args ...interface{}) (Result, error) GetOne(ctx context.Context, sql string, args ...interface{}) (Record, error) GetValue(ctx context.Context, sql string, args ...interface{}) (Value, error) GetArray(ctx context.Context, sql string, args ...interface{}) ([]Value, error) GetCount(ctx context.Context, sql string, args ...interface{}) (int, error) GetScan(ctx context.Context, objPointer interface{}, sql string, args ...interface{}) error
数据单条操作
Insert
/Replace
/Save
方法中的data
参数支持的数据类型为:string/map/slice/struct/*struct
,当传递为slice
类型时,自动识别为批量操作,此时batch
参数有效。
Insert(ctx context.Context, table string, data interface{}, batch...int) (sql.Result, error) Replace(ctx context.Context, table string, data interface{}, batch...int) (sql.Result, error) Save(ctx context.Context, table string, data interface{}, batch...int) (sql.Result, error)
在这里由衷的感叹一句:gf确实非常方便。至今记得自己用gorm1.1版本时,困顿于批量插入无法自拔:# Go GORM是时候升级新版本了 2.0新特性介绍
数据修改/删除
Update(ctx context.Context, table string, data interface{}, condition interface{}, args ...interface{}) (sql.Result, error) Delete(ctx context.Context, table string, condition interface{}, args ...interface{}) (sql.Result, error)
总结
虽然GoFrame的ORM链式操作非常简单且强大,但是业务中总还是有一些逻辑需要使用原生方法实现,化繁为简。