建立数据库连接

前一章节中我们已经演示了使用GORM建立MySQL数据库连接的例子代码,实际上建立数据库连接时还有一些可选的配置项,这篇笔记我们简单介绍一下。GORM官方支持的数据库类型包括MySQL、PostgreSQL、SQLite、SQL Server和TiDB,该篇介绍的内容适用于MySQL数据库。

创建数据库连接

下面例子代码中我们编写了一个函数用于创建数据库连接。

conf/db.go

package conf

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

var Db *gorm.DB

func InitDb() {
    dsn := "root:root@tcp(127.0.0.1:3306)/netstore?charset=utf8mb4&parseTime=true&loc=Local"
    conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }
    Db = conn
}

代码中,我们将建立数据库连接的代码单独抽取到了conf/db.go中,这样在其它包中直接引用conf.Db即可执行增删改查操作。

配置数据库连接池

GORM底层使用了数据库连接池,连接池具有一些默认参数,我们也可以手动对其进行配置,下面是一个例子。

conf/db.go

package conf

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

var Db *gorm.DB

func InitDb() {
    dsn := "root:root@tcp(127.0.0.1:3306)/netstore?charset=utf8mb4&parseTime=true&loc=Local"
    conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }
    sqlDb, err := conn.DB()
    if err != nil {
        panic(err)
    }
    sqlDb.SetMaxIdleConns(10)
    sqlDb.SetMaxOpenConns(100)
    sqlDb.SetConnMaxLifetime(0)
    Db = conn
}
  • maxIdleConns:连接池中保留的空闲连接数,默认值10
  • maxOpenConns:连接池中的最大连接数,默认值100
  • connMaxLifetime:连接最大存活时间,默认值0即无限时间

GORM其它配置

GORM中创建连接时,我们可以用Config结构体指定一些配置信息,这里我们介绍一些常用配置。

指定日志记录器

Logger字段可以指定GORM的日志记录器,常用于指定日志级别。下面例子代码中我们指定GORM使用INFO级别输出日志,该日志级别下GORM会输出执行的SQL语句,对于我们调试有些帮助。

conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    Logger: logger.Default.LogMode(logger.Info),
})

创建SQL预编译缓存

PrepareStmt用于指定GROM是否使用预编译SQL语句,默认值为false。开启后GORM会启用并缓存SQL预编译语句,一般来说都建议开启。

conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    PrepareStmt: true,
})
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap