beego框架 ORM 数据库连接设置

在 beego 框架中,model 主要利用 ORM 进行数据库操作。ORM 是指对象-关系映射,在 Go 语言中就是将 struct数据类型和数据库记录进行映射。

本章介绍 beego ORM 数据库连接相关设置。

 

1. beego支持的数据库类型

目前 ORM 支持三种数据库,分别是:

  • mysql
  • sqlite3
  • Postgres

使用不通的数据库,需要导入不通的数据库驱动:

import (
    // 导入mysql驱动
    _ "github.com/go-sql-driver/mysql"
    // 导入sqlite3驱动
    _ "github.com/mattn/go-sqlite3"
    // 导入Postgres驱动
    _ "github.com/lib/pq"
)

根据需要导入自己想要的驱动即可。

 

2. mysql数据库连接

这里介绍mysql数据库的详细链接参数,要想连接mysql数据库,首先得注册一个数据库,在调用查询函数会自动创建连接。

ORM 必须注册一个别名为 default 的数据库,作为默认使用的数据库。

注册数据库的函数原型:

func RegisterDataBase(aliasName, driverName, dataSource string, params ...int) error

参数说明

参数名说明
aliasName数据库的别名,用来在 ORM 中切换数据库使用
driverName驱动名字
dataSource数据库连接字符串
params附加参数

例子:

// 注册默认数据库,驱动为mysql, 第三个参数就是我们的数据库连接字符串。
orm.RegisterDataBase("default", "mysql", "root:123456@tcp(localhost:3306)/tizi?charset=utf8")

mysql数据库连接字符串DSN (Data Source Name)详解:

格式:

username:password@protocol(address)/dbname?param=value

参数说明

参数名说明
username数据库账号
password数据库密码
protocol连接协议,一般就是tcp
address数据库地址,可以包含端口。例: localhost:3306 , 127.0.0.1:3306
dbname数据库名字
param=value最后面问号(?)之后可以包含多个键值对的附加参数,多个参数之间用&连接。

常用附加参数说明:

参数名默认值说明
charsetnone设置字符集,相当于 SET NAMES <value> 语句
locUTC设置时区,可以设置为Local,表示根据本地时区走
parseTimefalse是否需要将 mysql的 DATE 和 DATETIME 类型值转换成GO的time.Time类型。
readTimeout0I/O 读超时时间, sql查询超时时间. 单位 ("ms", "s", "m", "h"), 例子: "30s", "0.5m" or "1m30s".
timeout0连接超时时间,单位("ms", "s", "m", "h"), 例子: "30s", "0.5m" or "1m30s".

例子:

root:123456@(123.180.11.30:3306)/tizi?charset=utf8&timeout=5s&loc=Local&parseTime=true

 

3. 数据库连接池设置

数据库连接词参数主要有下面两个:

1) SetMaxIdleConns

根据数据库的别名,设置数据库的最大空闲连接:

orm.SetMaxIdleConns("default", 20)

2) SetMaxOpenConns

根据数据库的别名,设置数据库的最大数据库连接

orm.SetMaxOpenConns("default", 100)

 

14 数据库调试模式

打开调试模式,当执行 orm 查询的时候,会打印出对应的 sql 语句。

orm.Debug = true

beego ORM 高级查询:针对业务比较复杂,涉及复杂的查询条件的场景,beego orm为我们提供了QuerySeter 对象,用来组织复杂的查询条件。