หน้าแรกผลงานความสำเร็จปรึกษาโปรเจกต์ของคุณ
ปรึกษาโปรเจกต์ของคุณ
การใช้งาน MySQLใน Go Fiber
เทคโนโลยี

การใช้งาน MySQLใน Go Fiber

15 ต.ค. 2569

Article illustration 1
Article content divider

สวัสดีค่ะ ในบทความนี้เราจะมาพูดถึงวิธีการใช้งานฐานข้อมูลใน Go Fiber กันค่ะ การเชื่อมต่อและจัดการข้อมูลในฐานข้อมูลเป็นส่วนสำคัญของการพัฒนาแอปพลิเคชัน ในที่นี้เราจะใช้ MySQL เป็นตัวอย่าง

MySQL คืออะไร

Article illustration 2
Article content divider

MySQL คือระบบจัดการฐานข้อมูลแบบข้อมูลเชิงสัมพันธ์ (RDBMS) ที่ใช้ในการจัดเก็บข้อมูลในรูปแบบตาราง มีการแบ่งข้อมูลเป็นแถวและคอลัมน์ ช่วยให้ง่ายต่อการเชื่อมโยงและควบคุมข้อมูล มีประสิทธิภาพและยืดหยุ่น นิยมใช้งานมากในการพัฒนาและเชื่อมโยงข้อมูลในแอปพลิเคชันต่าง ๆ

เริ่มต้นด้วยการเชื่อมต่อกับ MySQL Database กันค่ะ ใช้งานไลบรารี gorm และ mysql

GORM Guides 👉 https://gorm.io/docs/

package main

import (

    "gorm.io/driver/mysql"

    "gorm.io/gorm"

)

 

func main() {

    // เชื่อมต่อ MySQL Database

    dsn := "user:password@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"

    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

    if err != nil {

        panic("failed to connect database")

    }

    

    defer db.Close()

}

ต่อมาเราจะสร้างโมเดลของข้อมูลที่ต้องการจัดเก็บในฐานข้อมูล โดยใช้ struct ใน Go

type User struct {

    gorm.Model

    Name string

    Email string

}

หลังจากนั้น เราจะสร้างตารางในฐานข้อมูล MySQL โดยใช้ AutoMigrate:

func Migrate(db *gorm.DB) {

    db.AutoMigrate(&User{})

}

เมื่อเราเตรียมฐานข้อมูลและโมเดลแล้ว เราสามารถสร้างและดึงข้อมูลได้ดังนี้:

// สร้างข้อมูลใหม่

func CreateUser(db *gorm.DB, name, email string) {

    user := User{Name: name, Email: email}

    db.Create(&user)

}

 

// ดึงข้อมูลทั้งหมด

func GetAllUsers(db *gorm.DB) []User {

    var users []User

    db.Find(&users)

    return users

}

 

// ดึงข้อมูลด้วย ID

func GetUserByID(db *gorm.DB, id uint) (User, error) {

    var user User

    result := db.First(&user, id)

    return user, result.Error

}

ตัวอย่างการใช้งานใน Go Fiber:

package main

 

import (

    "github.com/gofiber/fiber/v2"

    "gorm.io/driver/mysql"

    "gorm.io/gorm"

)

 

// User เป็นโครงสร้างข้อมูลผู้ใช้

type User struct {

    gorm.Model

    Name string

    Email string

}

 

// Migrate สร้างตารางในฐานข้อมูล MySQL

func Migrate(db *gorm.DB) {

    db.AutoMigrate(&User{})

}

 

// CreateUser สร้างข้อมูลผู้ใช้ใหม่

func CreateUser(db *gorm.DB, name, email string) {

    user := User{Name: name, Email: email}

    db.Create(&user)

}

 

// GetAllUsers ดึงข้อมูลผู้ใช้ทั้งหมด

func GetAllUsers(db *gorm.DB) []User {

    var users []User

    db.Find(&users)

    return users

}

 

// GetUserByID ดึงข้อมูลผู้ใช้ด้วย ID

func GetUserByID(db *gorm.DB, id string) (User, error) {

    var user User

    result := db.First(&user, id)

    return user, result.Error

}

 

func main() {

    // เชื่อมต่อ MySQL Database

    dsn := "user:password@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"

    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

    if err != nil {

        panic("failed to connect database")

    }

    defer db.Close()

 

    // สร้างตารางในฐานข้อมูล MySQL

    Migrate(db)

 

    // สร้าง Fiber App

    app := fiber.New()

 

    // สร้าง Endpoint เพื่อสร้างข้อมูลผู้ใช้ใหม่

    app.Post("/users", func(c *fiber.Ctx) error {

        var user User

        if err := c.BodyParser(&user); err != nil {

            return err

        }

        CreateUser(db, user.Name, user.Email)

        return c.SendStatus(fiber.StatusCreated)

    })

 

    // สร้าง Endpoint เพื่อดึงข้อมูลผู้ใช้ทั้งหมด

    app.Get("/users", func(c *fiber.Ctx) error {

        users := GetAllUsers(db)

        return c.JSON(users)

    })

 

    // สร้าง Endpoint เพื่อดึงข้อมูลผู้ใช้ด้วย ID

    app.Get("/users/:id", func(c *fiber.Ctx) error {

        id := c.Params("id")

        user, err := GetUserByID(db, id)

        if err != nil {

            return c.SendStatus(fiber.StatusNotFound)

        }

        return c.JSON(user)

    })

 

    // รัน Fiber App ที่พอร์ต 8080

    app.Listen(":8080")

}

ข้อดี

  1. ความยืดหยุ่น: การใช้งานฐานข้อมูลใน Go Fiber ช่วยให้เราสามารถจัดการข้อมูลในแอปพลิเคชันได้อย่างยืดหยุ่น และปรับแต่งตามความต้องการของโปรเจคได้โดยง่าย เช่น

  • ปรับแต่งโครงสร้างข้อมูล: เราสามารถเพิ่มหรือลบฟิลด์ในตารางฐานข้อมูล และปรับเปลี่ยนประเภทข้อมูลได้ตามความต้องการของโปรเจค

  • ปรับแต่งการเชื่อมต่อ: เราสามารถปรับแต่งการเชื่อมต่อฐานข้อมูลเช่นการกำหนด DSN, การใช้โปรโตคอลและการตั้งค่าการเชื่อมต่อเพื่อให้เหมาะสมกับแอปพลิเคชันของเรา

  • จัดการข้อมูล: เราสามารถเพิ่ม แก้ไข ลบ หรือค้นหาข้อมูลได้อย่างยืดหยุ่นตามความต้องการของแอปพลิเคชัน

2. ประสิทธิภาพ: Go Fiber มีประสิทธิภาพสูงในการทำงานและการประมวลผลข้อมูล ทำให้สามารถจัดการกับฐานข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพ

ขยายความเพิ่มเติม -> GORM สามารถจัดระเบียบในการ จัดการฐานข้อมูล กับโครงสร้างของภาษา Golang ได้อย่างมีประสิทธิภาพ ฯลฯ

3. การจัดการข้อผิดพลาด: ด้วยการใช้ Go Fiber ร่วมกับฐานข้อมูล เราสามารถจัดการกับข้อผิดพลาดที่เกิดขึ้นในการเชื่อมต่อฐานข้อมูลหรือการดึงข้อมูลได้อย่างมีประสิทธิภาพ

ข้อเสีย

  1. ความซับซ้อนในการตั้งค่า: การเชื่อมต่อฐานข้อมูลใน Go Fiber อาจซับซ้อนเนื่องจากต้องนำเข้าไลบรารีเสริมเพื่อการเชื่อมต่อ และการกำหนดค่า DSN ซึ่งเป็นส่วนประกอบของไลบรารีเหล่านั้น ส่วน Fiber เองยังไม่มีฟีเจอร์เชื่อมต่อฐานข้อมูลโดยตรงที่สามารถใช้งานได้โดยตรง

  2. การจัดการข้อมูลซับซ้อน: เมื่อโปรเจคมีข้อมูลที่มีโครงสร้างซับซ้อน การจัดการและแก้ไขฐานข้อมูลใน GORM อาจมีความซับซ้อนมากขึ้น

  3. ความไม่เสถียรในการเชื่อมต่อ: การเชื่อมต่อฐานข้อมูลใน Go Fiber อาจไม่เสถียรเมื่อมีปัญหา เช่น การต่ออายุการเชื่อมต่อหรือการขาดการเชื่อมต่อ ซึ่งส่งผลต่อประสิทธิภาพและความพร้อมในการให้บริการของแอปพลิเคชัน

  4. การปรับแต่งที่จำเป็น: บางครั้งการใช้งานฐานข้อมูลใน Go Fiber อาจต้องการการปรับแต่งเพิ่มเติมในกรณีที่ต้องการฟีเจอร์พิเศษหรือการทำงานที่ซับซ้อนมากขึ้น เช่น การใช้งาน Transaction Raw SQL และ Connection Pool

ข้อแนะนำเพิ่มเติมในการใช้งาน GORM

  • การใช้งาน Transaction: ในกรณีที่ต้องการดำเนินการหลาย ๆ คำสั่ง SQL พร้อมกัน และต้องการให้การดำเนินการเหล่านั้นถูกตรวจสอบเพื่อความถูกต้อง การใช้งาน Transaction เป็นเครื่องมือที่จำเป็น เพื่อให้ระบบมีความปลอดภัยและไม่เกิดข้อผิดพลาดในการทำงาน

  • การใช้งาน Raw SQL: ในกรณีที่ต้องการความยืดหยุ่นในการเขียนคำสั่ง SQL ที่ซับซ้อนหรือไม่สามารถทำได้ด้วย ORM อาจต้องใช้งาน Raw SQL เพื่อปรับแต่งคำสั่ง SQL ตามความต้องการ

  • การใช้งาน Connection Pool: เพิ่มการปรับแต่งในการจัดการ Connection Pool เช่น การกำหนดขนาด Pool หรือการกำหนดการต่ออายุของ Connection เพื่อให้การเชื่อมต่อมีประสิทธิภาพและเสถียรมากยิ่งขึ้น

ในบทความนี้ เราได้เรียนรู้เกี่ยวกับวิธีการใช้งานฐานข้อมูลใน Go Fiber โดยการเชื่อมต่อ MySQL Database การสร้างโมเดล การสร้างและดึงข้อมูลและข้อดีข้อเสียของการใช้งาน Database ใน Go Fiber ซึ่งทำให้เราสามารถพัฒนาแอปพลิเคชัน Go Fiber ที่มีความสามารถในการจัดการข้อมูลได้อย่างมีประสิทธิภาพและง่ายดายมากยิ่งขึ้นค่ะ

Article content divider

การใช้งาน MySQLใน Go Fiber was originally published in I GEAR GEEK on Medium, where people are continuing the conversation by highlighting and responding to this story.

บทความที่เกี่ยวข้อง

เทคโนโลยี

TypeScript คืออะไร? แล้วคุณรู้หรือไม่ว่าใช้งานยังไง

บทความแนะนำภาษา TypeScript ว่าคืออะไร ทำไมถึงควรเรียนรู้ และช่วยให้การเขียนโปรแกรมปลอดภัยและจัดการง่ายขึ้นอย่างไร

เทคโนโลยี

มาทำความรู้จักกับ Lodash กัน

ก่อนอื่นเลยต้องขอสวัสดีพี่ๆน้องเพื่อนๆ ชาวโปรแกรมเมอร์ กันก่อนนะครับ สำหรับ Blog นี้ผมจะพาทุกๆคนไปทำความรู้จักกับ Libary…

เทคโนโลยี

Multiple Language ด้วย i18n บน nuxt.js Framework

สวัสดีครับ พอดีผมได้มีโอกาศลองใช้งานเจ้าตัว i18n เห็นว่าเจ้าตัวเนี่ย มันใช้งานค่อนข้างง่ายพอสมควรครับ วันนี้เลยจะมาแชร์ถึงการ setting…

I GEAR GEEK

Technology Partner ขับเคลื่อน Digital Transformation ให้ธุรกิจคุณ

โซลูชัน

  • ERP และระบบธุรกิจ
  • AI Knowledge และ AI Agents
  • Customer Data & Marketing Automations

บริการ

  • Web Application, Mobile Application

บริษัท

  • บทความ
  • แกลเลอรี
  • ร่วมงานกับเรา

ติดต่อ

marketing@igeargeek.com

Malada space ชั้น 2, 89/9 หมู่ 5 ตำบลสุเทพ อำเภอเมืองเชียงใหม่ จังหวัดเชียงใหม่ 50200

LINE OA@igeargeekสอบถามโปรเจกต์083-579-5068สมัครงานและฝึกงาน083-254-2241
© 2026 I GEAR GEEK สงวนลิขสิทธิ์
ปรึกษาโปรเจกต์ของคุณ