• 组件分享之后端组件——基于Golang实现的database/sql附加功能组件dbr


    组件分享之后端组件——基于Golang实现的database/sql附加功能组件dbr

    背景

    近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

    组件基本信息

    内容

    本节我们分享一个基于Golang实现的database/sql附加功能组件dbr,它可以实现超快速的性能和便利性。
    具体使用方式如下:
    1、安装与加载

    go get -u github.com/gocraft/dbr/v2
    import "github.com/gocraft/dbr/v2"

    2、打开连接

    1. // create a connection (e.g. "postgres", "mysql", or "sqlite3")
    2. conn, _ := Open("postgres", "...", nil)
    3. conn.SetMaxOpenConns(10)
    4. // create a session for each business unit of execution (e.g. a web request or goworkers job)
    5. sess := conn.NewSession(nil)
    6. // create a tx from sessions
    7. sess.Begin()

    3、创建和使用

    1. sess := mysqlSession
    2. tx, err := sess.Begin()
    3. if err != nil {
    4. return
    5. }
    6. defer tx.RollbackUnlessCommitted()
    7. // do stuff...
    8. tx.Commit()

    4、将数据加载到结构中

    1. // columns are mapped by tag then by field
    2. type Suggestion struct {
    3. ID int64 // id, will be autoloaded by last insert id
    4. Title NullString `db:"subject"` // subjects are called titles now
    5. Url string `db:"-"` // ignored
    6. secret string // ignored
    7. }
    8. // By default gocraft/dbr converts CamelCase property names to snake_case column_names.
    9. // You can override this with struct tags, just like with JSON tags.
    10. // This is especially helpful while migrating from legacy systems.
    11. var suggestions []Suggestion
    12. sess := mysqlSession
    13. sess.Select("*").From("suggestions").Load(&suggestions)

    5、带有 where-value 插值的

    1. // database/sql uses prepared statements, which means each argument
    2. // in an IN clause needs its own question mark.
    3. // gocraft/dbr, on the other hand, handles interpolation itself
    4. // so that you can easily use a single question mark paired with a
    5. // dynamically sized slice.
    6. sess := mysqlSession
    7. ids := []int64{1, 2, 3, 4, 5}
    8. sess.Select("*").From("suggestions").Where("id IN ?", ids)

    具体使用方式可以参见该文档

    本文声明:
    88x31.png
    知识共享许可协议
    本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
  • 相关阅读:
    基于ReadWriteLock的全局安全缓存实现
    Wireshark Lua插件入门
    第十三届蓝桥杯 C++ B 组省赛 F 题——统计子矩阵 (AC)
    JavaWeb项目的热部署配置
    Linux挂载硬盘
    apt,yum.apk包管理工具详解
    完整的电商平台后端API开发总结
    头条号自媒体运营:如何在今日头条涨500+粉丝?
    ssm城市旅游景点信息交流平台的设计与实现毕业设计源码290915
    【云原生】SpringCloud-Spring Boot Starter使用测试
  • 原文地址:https://blog.csdn.net/csde12/article/details/125467858