zoukankan      html  css  js  c++  java
  • ent 基本使用十一 sql.DB 集成

    这个功能是github中大家提的比较多的一个,所以官方也暴露了相关的api

    配置sql.DB

    • 一种方式
    package main
    import (
        "time"
        "<your_project>/ent"
        "github.com/facebookincubator/ent/dialect/sql"
    )
    func Open() (*ent.Client, error) {
        drv, err := sql.Open("mysql", "<mysql-dsn>")
        if err != nil {
            return nil, err
        }
        // Get the underlying sql.DB object of the driver.
        db := drv.DB()
        db.SetMaxIdleConns(10)
        db.SetMaxOpenConns(100)
        db.SetConnMaxLifetime(time.Hour)
        return ent.NewClient(ent.Driver(drv)), nil
    }
     
     
    • 第二种方式
    package main
    import (
        "database/sql"
        "time"
        "<your_project>/ent"
        entsql "github.com/facebookincubator/ent/dialect/sql"
    )
    func Open() (*ent.Client, error) {
        db, err := sql.Open("mysql", "<mysql-dsn>")
        if err != nil {
            return nil, err
        }
        db.SetMaxIdleConns(10)
        db.SetMaxOpenConns(100)
        db.SetConnMaxLifetime(time.Hour)
        // Create an ent.Driver from `db`.
        drv := entsql.OpenDB("mysql", db)
        return ent.NewClient(ent.Driver(drv)), nil
    }
     

    集成监控

    方便分析sql

    package main
    import (
        "context"
        "database/sql"
        "database/sql/driver"
        "<project>/ent"
        "contrib.go.opencensus.io/integrations/ocsql"
        "github.com/go-sql-driver/mysql"
        entsql "github.com/facebookincubator/ent/dialect/sql"
    )
    type connector struct {
        dsn string
    }
    func (c connector) Connect(context.Context) (driver.Conn, error) {
        return c.Driver().Open(c.dsn)
    }
    func (connector) Driver() driver.Driver {
        return ocsql.Wrap(
            mysql.MySQLDriver{},
            ocsql.WithAllTraceOptions(),
            ocsql.WithRowsClose(false),
            ocsql.WithRowsNext(false),
            ocsql.WithDisableErrSkip(true),
        )
    }
    // Open new connection and start stats recorder.
    func Open(dsn string) *ent.Client {
        db := sql.OpenDB(connector{dsn})
        // Create an ent.Driver from `db`.
        drv := entsql.OpenDB("mysql", db)
        return ent.NewClient(ent.Driver(drv))
    }

    参考资料

    https://entgo.io/docs/sql-integration/

  • 相关阅读:
    nginx+redis 实现 jsp页面缓存,提升系统吞吐率
    mybatis做like模糊查询
    java自定义注解实现前后台参数校验
    sql like 通配符 模糊查询技巧及特殊字符
    Hbuilder 常用快捷键汇总
    史上最全最强SpringMVC详细示例实战教程
    软件设计师&产品经理应常去的网站
    ActionMQ5.8.0 JMS实例 手把手详细图解
    Maven简单使用
    Maven 使用介绍
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11675563.html
Copyright © 2011-2022 走看看