728x90
전 회사에서 쓰던 Golang framework Fiber를 공부하려고 한다.
- 내가 전 회사에서 개발했던 부분은 여러 DB에 접속하고, 접속이 잘 되었는지 확인하는 부분이었다.
- 이번에 다시 해보니 정말 금방 개발할 수 있는 양이었는데, 왜 이렇게 헤맸던 건지 모르겠다.
- 예전에 DB에 접속하기 위해서
https://github.com/go-sql-driver/mysq
를 썼었는데, 이번엔 GORM으로 접속해보려고 한다.
- 먼저 아래의 두 개를 설치한다.
"gorm.io/driver/mysql"
"gorm.io/gorm"
- 지난번 포스팅과 변경된 점은 폴더 구조인데, 하단 캡처를 참고하면 된다.
- main.go
package main
import (
"fiber/src/database"
"fiber/src/routes"
"log"
)
func main() {
app := routes.Router()
database.Init()
log.Fatal(app.Listen(":3000"))
}
- router.go
package routes
import (
"fiber/src/controllers"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html"
)
func Router() *fiber.App {
// Create a new engine
engine := html.New("./views", ".html")
// Pass the engine to the Views
app := fiber.New(fiber.Config{
Views: engine,
})
// Route 설정
app.Get("/", controllers.Index)
return app
}
- database.go
package database
import (
"log"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var (
DBConn *gorm.DB
)
func Init() {
// err := godotenv.Load("../../.env")
// if err != nil {
// log.Fatal("Error loading .env file")
// }
var err error
dsn := "[dbuser]:[password]@tcp(127.0.0.1:3306)/[dbname]?charset=utf8mb4&parseTime=True&loc=Local"
DBConn, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("failed to connect database")
}
}
- 나는 mariaDB로 진행했는데, mysql과 동일하다.
- local db를 생성하면 포트는 기본 3306이다.
- controller.go
package controllers
import (
"fiber/src/database"
"fmt"
"github.com/gofiber/fiber/v2"
)
/* func Index(c *fiber.Ctx) error {
type Admin struct {
Admin_Seq int
Admin_Id string
Admin_Nm string
}
var admins []Admin
db := database.DBConn
db.Raw("SELECT admin_seq, admin_id, admin_nm FROM admin_member").Scan(&admins)
data := fiber.Map{"admin": admins}
fmt.Println(data)
return c.Render("index", data)
} */
func Index(c *fiber.Ctx) error {
type admin_members struct {
gorm.Model
Admin_Seq int `gorm:"column:admin_seq"`
Admin_Id string `gorm:"column:admin_id"`
Admin_Nm string `gorm:"column:admin_nm"`
}
var admin_member []admin_members
db := database.DBConn
// db.Raw("SELECT admin_seq, admin_id, admin_nm FROM admin_member").Scan(&admins)
db.Find(&admin_member)
data := fiber.Map{"admin": admin_member}
fmt.Println(data)
return c.Render("index", data)
}
- 이렇게 코드를 넣으면 원하는 DB에 접속할 수 있고, 데이터도 조회할 수 있다.
2022.11.01 코드변경
728x90
'개발 > Go' 카테고리의 다른 글
[Fiber] Fiber 설정 및 에러 (0) | 2022.11.05 |
---|---|
[Fiber] Fiber 기본 (0) | 2022.11.04 |
[Fiber] Go로 Backend 시작하기 (2) | 2022.08.10 |
[Go] 기초 - 채널 (0) | 2022.08.04 |
[Go] 기초 - 루틴(goroutine) (0) | 2022.08.02 |