Corporate Training
Request Demo
Click me
Menu
Let's Talk
Request Demo

Tutorials

 ORM with GORM

29. ORM with GORM

Object-Relational Mapping (ORM) is a technique that allows you to interact with relational databases using an object-oriented approach. GORM is a popular ORM library for Go that simplifies database operations and provides a higher-level abstraction for working with databases. In this tutorial, we'll cover how to use GORM to perform CRUD operations with a PostgreSQL database.

Installing GORM:

To get started, you'll need to install the GORM library:

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

 

Connecting to the Database:

Before using GORM, you need to establish a database connection.

package main

import (
	"fmt"
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
	"log"
)

type Book struct {
	ID     uint
	Title  string
	Author string
}

func main() {
	dsn := "user=username password=password dbname=mydb host=localhost port=5432 sslmode=disable"
	db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Connected to the database")

	// Database operations...
}

 

Replace 'username',  'password' ,'mydb'and other connection details as needed.

Creating Records:

You can use GORM's  'Create' function to insert records into the database.

func main() {
	// ...

	book := Book{Title: "Go Programming", Author: "John Doe"}
	result := db.Create(&book)
	if result.Error != nil {
		log.Fatal(result.Error)
	}
	fmt.Printf("New book created with ID: %d\n", book.ID)
}

 

Querying Records:

GORM provides various querying methods to retrieve records from the database.

func main() {
	// ...

	var books []Book
	db.Find(&books)
	for _, book := range books {
		fmt.Printf("ID: %d, Title: %s, Author: %s\n", book.ID, book.Title, book.Author)
	}
}

 

Updating Records:

To update records, use the 'Save' function.

func main() {
	// ...

	var book Book
	db.First(&book, 1)
	book.Author = "Jane Smith"
	db.Save(&book)
}

 

Deleting Records:

You can delete records using GORM's  'Delete' function.

func main() {
	// ...

	var book Book
	db.First(&book, 1)
	db.Delete(&book)
}

 

Associations and Relationships:

GORM supports defining associations and relationships between tables. For example, you can define a one-to-many relationship between a 'User'  and 'Post' model.

type User struct {
	ID    uint
	Name  string
	Posts []Post
}

type Post struct {
	ID     uint
	Title  string
	UserID uint
}

 

Summary:

  • GORM is a powerful ORM library for Go that simplifies database operations.
  • Use GORM's 'Create', 'Find', 'Save', and 'Delete' functions for CRUD operations.
  • GORM supports associations and relationships between models.
  • Define models that correspond to database tables and use GORM's functions to interact with the database.

GORM significantly reduces the boilerplate code required for database operations and allows you to focus on building your application's logic. It's a valuable tool for creating robust and maintainable Go applications that interact with databases.