필요한 패키지 설치

- mysql driver
go get -u github.com/go-sql-driver/mysql

저는 ORM 라이브러리로 GORM 을 사용하기 때문에 아래 두 패키지를 추가로 설치 하였습니다.

- gorm
go get -u github.com/jinzhu/gorm
- gorm mysql driver
go get -u github.com/jinzhu/gorm/dialects/mysql

Connection Pool 파일 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// hellogo/internal/databases/mysql.go
package db
 
import (
    "os"
 
    // mysql driver
    _ "github.com/go-sql-driver/mysql"
    "github.com/jinzhu/gorm"
 
    // gorm mysql driver
    _ "github.com/jinzhu/gorm/dialects/mysql"
)
 
// Connect DB
func Connect() *gorm.DB {
    db, err := gorm.Open("mysql", "username:password@tcp(127.0.0.1)/dbname"?charset=utf8mb4&parseTime=True&loc=Local")
    if err != nil {
        // panic("failed to connect database")
        panic(err)
    }
    db.DB().SetMaxIdleConns(10)
    db.DB().SetMaxOpenConns(100)
 
    return db
}

DBCP 사용하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// hellogo/main.go
package main
 
import (
    "log"
    db "hellogo/internal/databases"
)
 
type User struct {
    Name  string
    Email string
}
 
func main() {
    db := db.Connect()
    db.LogMode(true)
 
    user := &User{}
 
    if err := db.First(user).Error; err != nil {
        panic(err)
    }
 
    log.Println(user)
}