目录
  • 前言
  • 常用方法
    • SQL操作方法,返回原生的标准库sql对象
    • 数据表记录查询:
    • 数据单条操作
    • 数据修改/删除
  • 总结

    前言

    最近一直在用GoFrame(下文简称gf)来开发项目,在熟悉业务逻辑之后就是马不停蹄的撸代码了。

    之前整理过结构体和json转换的文章:GoFrame必知必会之Scan:类型转换,今天整理同样比较重要的ORM相关的文章。

    gf是支持ORM原生操作的,在ORM链式操作执行不了太过于复杂的SQL操作时,可以交给方法操作来处理。

    这篇文章整理原生操作的常用方法,下篇文章根据整理的原生方法整理对应的开箱体验。

    常用方法

    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链式操作非常简单且强大,但是业务中总还是有一些逻辑需要使用原生方法实现,化繁为简。

    以上就是GoFrame ORM原生方法操作示例的详细内容,更多关于GoFrame ORM原生方法的资料请关注其它相关文章!

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。