Your Ultimate Guide to Gorm-Plus: Simplifying CRUD Operations

Jan 8, 2023 | Programming

Have you ever struggled with managing databases in Go? Look no further than Gorm-Plus, a powerful extension of Gorm specifically designed to enhance your development experience. In this article, we’ll guide you through the step-by-step process of setting up Gorm-Plus and implementing CRUD operations. And don’t worry, we’ve included troubleshooting tips to ensure a smooth experience!

What is Gorm-Plus?

Gorm-Plus is an advanced library built on top of Gorm, making it easier to work with databases in Golang. It focuses on providing straightforward interfaces to perform CRUD (Create, Read, Update, Delete) operations, allowing developers to handle databases with ease.

Creating a User Table

First things first, let’s set up a database table for users. The following SQL snippet will create a user table with various attributes:

CREATE TABLE users (
  id bigint NOT NULL AUTO_INCREMENT,
  username varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  password varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  address varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  age bigint DEFAULT NULL,
  phone varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  score bigint DEFAULT NULL,
  dept varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  created_at datetime(3) DEFAULT NULL,
  updated_at datetime(3) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=407 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

To insert data into this table, you can utilize the following SQL commands:

INSERT INTO users (username, password, address, age, phone, score, dept, created_at, updated_at)
VALUES 
  ('user1', 'password1', 'address1', 25, '12345678901', 80, 'dept1', NOW(), NOW()), 
  ('user2', 'password2', 'address2', 30, '12345678902', 90, 'dept2', NOW(), NOW());

Setting Up Your Go Environment

Before diving into coding, you need to ensure your environment is set up correctly. Start by running:

go get github.com/acmestack/gorm-plus

Next, utilize the following Go code to initialize the Gorm-Plus package :

package main

import (
  "github.com/acmestack/gorm-plus/gplus"
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
  "gorm.io/gorm/logger"
  "log"
  "time"
)

type User struct {
  ID        int64     `json:"id"`
  Username  string    `json:"username"`
  Password  string    `json:"password"`
  Address   string    `json:"address"`
  Age       int       `json:"age"`
  Phone     string    `json:"phone"`
  Score     int       `json:"score"`
  Dept      string    `json:"dept"`
  CreatedAt time.Time `json:"created_at"`
  UpdatedAt time.Time `json:"updated_at"`
}

var gormDb *gorm.DB

func init() {
  dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
  var err error
  gormDb, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
    Logger: logger.Default.LogMode(logger.Info),
  })
  if err != nil {
    log.Println(err)
  }
  gplus.Init(gormDb)
}

Performing CRUD Operations

With Gorm-Plus, you can simply select user data with minimal coding. Imagine Gorm-Plus as a personal assistant. You just give the command, and it fetches the details for you with no hassle.

func main() {
  users, resultDb := gplus.SelectList[User](nil)
  log.Println("error:", resultDb.Error)
  log.Println("RowsAffected:", resultDb.RowsAffected)
  for _, user := range users {
    log.Println("user:", user)
  }
}

In this analogy, suppose you are a chef in a restaurant (your main function), and the Gorm-Plus library is your sous-chef. The chef merely orders what is needed (users), and the sous-chef fetches them promptly.

Troubleshooting

If you encounter any issues, consider the following troubleshooting ideas:

  • Ensure your database credentials are correct.
  • Verify that your MySQL server is running.
  • Check for proper installation of the Gorm and Gorm-Plus libraries.
  • Review your SQL syntax to avoid errors during table creation or insertion.

For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.

Conclusion

Gorm-Plus simplifies database interactions in Go, allowing you to focus on application logic rather than boilerplate code. With the outlined steps, you should be able to set up Gorm-Plus and begin integrating it into your projects easily.

At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

Stay Informed with the Newest F(x) Insights and Blogs

Tech News and Blog Highlights, Straight to Your Inbox