필요한 패키지 설치

- 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 파일 생성

// 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 사용하기

// 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)
}