CRUD đơn giản với Go – Gin – PostgreSQL và ORM

Mở đầu Như các bài viết trước thì chúng ta đã tìm hiểu về Golang, Gin, PostgreSQL là gì thì hôm nay chúng ta sẽ có một bài thực hành nhỏ nho để hiểu rõ hơn về cách hoạt động của chúng nhé. ORM – GORM Trước khi vào thực hành thì ta tìm hiểu

Mở đầu

Như các bài viết trước thì chúng ta đã tìm hiểu về Golang, Gin, PostgreSQL là gì thì hôm nay chúng ta sẽ có một bài thực hành nhỏ nho để hiểu rõ hơn về cách hoạt động của chúng nhé.

ORM – GORM

Trước khi vào thực hành thì ta tìm hiểu thêm về ORM nhé. ORM hay Object Relational Mapping là tên gọi chỉ việc ánh xạ các record dữ liệu trong hệ quản trị cơ sở dữ liệu sang dạng đối tượng mà mã nguồn đang định nghĩa trong class. Với một ngôn ngữ lập trình phía backend làm việc với cơ sở dữ liệu nhiều như Golang thì GORM ra đời để phục vụ cho các Go dev chúng ta.
GORM là một thư viện tuyệt vời cho Golang. Nó là một ORM để xử lý quan hệ cơ sở dữ liệu. Thư viện GORM này được phát triển trên các package cơ sở dữ liệu/SQL.
Tổng quan và tính năng của GORM là:

  • Full-Featured ORM (almost)
  • Associations (Has One, Has Many, Belongs To, Many Too Many, Polymorphism)
  • Callbacks (Before/After Create/Save/Update/Delete/Find)
  • Preloading (eager loading)
  • Transactions
  • Composite Primary Key
  • SQL Builder
  • Logger
  • Developer Friendly

Cài đặt và viết một CRUD nhỏ

Chúng ta sẽ sử dụng tất cả những gì chúng ta có trong thời gian vừa qua. Đầu tiên sẽ là PostgreSQL và GORM để làm việc với cơ sở dữ liệu nhé.
Để cài đặt chúng ta sẽ chạy terminal 2 dòng như sau

go get -u gorm.io/gorm
go get -u gorm.io/driver/postgres

Sau đó các bạn cấu hình postgre để có thể kết nối được vào database của Postgre nhá:
image.png
Chúng ta sẽ khai báo một struct Post chứa các trường như sau:
image.png
Tiếp đó mình sẽ cài đặt các chức năng CRUD vào các api mình đã viết trước đó( các bạn có thể tham khảo ở đây https://viblo.asia/p/golang-va-gin-ruou-chuot-chui-Do754L705M6):
POSTimage.png
Đây là kết quả của POST API với Postgre:
image.pngGET
Ở đây mình sẽ demo cả 2 trường hợp Get All lẫn Get theo id nhé.
Lấy tất cả các dữ liệu đã nhập:
image.png
Kết quả:
image.png
Lấy dữ liệu theo id:
image.png
Kết quả:
image.pngUPDATE
Mình sẽ tạo một api update như sau:
image.png
Sau đó ta chạy service update, ở đây mình sẽ chỉnh lại thông tin của id 4 mình vừa nhập ở trên:
image.png
Kết quả:
image.png
Id 4 đã thay đổi title và description.
DELETE
Tiếp đến là delete:
image.png
Mình sẽ xóa Id 2 để các bạn có thể dễ hình dung hơn nhé:
image.png
Kết quả sau khi xóa Id 2:
image.png
Quá dễ phải không xD.

Tóm lại

Ở trên là các bước cơ bản để các bạn có thể hình dung ra một backend làm việc với dữ liệu như thế nào. Có thể thấy GORM giúp chúng ta thao tác khá nhanh và cũng không đòi hỏi quá cao về khả năng truy vấn SQL của bạn( ngoài ra vẫn còn nhiều cách truy vấn khác bạn có thể tham khảo https://gorm.io/docs/query.html). Hy vọng là bài viết của mình sẽ giúp các bạn có 1 cái nhìn tổng quan về Golang và có thể tự mày mò. Cảm ơn các bạn đã đọc bài viết của mình. Have a nice day ❤️
Các bài viết đã tham khảo:
CRUD using GIN, GORM, POSTGRES: https://medium.com/@tinhuynh1/crud-using-gin-gorm-postgres-90f3194a48dbGORM.io: https://gorm.io/docs/connecting_to_the_database.html

Nguồn: viblo.asia

Bài viết liên quan

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ

Cách sử dụng SFTP (Giao thức truyền file qua SSH an toàn hơn)

SFTP là cách an toàn để truyền files giữa các máy tính, gữa máy local và web hostin