gorm curd封装

作者: adm 分类: go 发布时间: 2024-07-16

GORM 是一个用于 Go 语言的 ORM(Object-Relational Mapping)库,它简化了数据库操作,允许你用更少的代码完成常见的 CRUD(Create, Read, Update, Delete)操作。下面是如何使用 GORM 封装 CRUD 操作的一个示例。

首先,确保你已经安装了 GORM,可以通过下面的命令来安装:

Bash

go get -u gorm.io/gorm

接下来,我们将为一个简单的用户模型封装 CRUD 操作。假设我们的用户模型如下:

Go

package main

import (
	"gorm.io/gorm"
)

type User struct {
	gorm.Model
	Name     string
	Email    string
	Password string
}

这里,我们使用了 GORM 自带的 Model 结构体,它包含了 ID, CreatedAt, UpdatedAt, DeletedAt 等字段。

然后,我们可以创建一个 UserRepository 接口和其实现来封装 CRUD 操作:

Go

// UserRepository 接口定义了 CRUD 操作
type UserRepository interface {
	Create(user *User) error
	Get(id uint) (*User, error)
	Update(user *User) error
	Delete(id uint) error
}

// UserRepositoryImpl 是 UserRepository 接口的实现
type UserRepositoryImpl struct {
	db *gorm.DB
}

func NewUserRepository(db *gorm.DB) UserRepository {
	return &UserRepositoryImpl{db: db}
}

func (r *UserRepositoryImpl) Create(user *User) error {
	return r.db.Create(user).Error
}

func (r *UserRepositoryImpl) Get(id uint) (*User, error) {
	user := &User{}
	if err := r.db.First(user, id).Error; err != nil {
		return nil, err
	}
	return user, nil
}

func (r *UserRepositoryImpl) Update(user *User) error {
	return r.db.Save(user).Error
}

func (r *UserRepositoryImpl) Delete(id uint) error {
	if id<=0{
		return errors.New("删除条件为空!")
	}
       user := &User{}
	if err := r.db.First(user, id).Error; err != nil {
		return err
	}
	return r.db.Delete(user,id).Error
}

在上面的代码中,我们定义了一个 UserRepository 接口,它包含了 CRUD 操作的签名。UserRepositoryImpl 结构体实现了这个接口,并使用 GORM 的 DB 对象来执行实际的数据库操作。

最后,你可以在主函数或其他地方使用 NewUserRepository 函数创建一个 UserRepository 实例,并通过它来调用 CRUD 方法。

请注意,为了使上述代码工作,你需要连接到数据库并使用 GORM 的 Open 或 NewSQLDB 函数初始化 gorm.DB 对象。这通常涉及设置数据库驱动和连接信息。具体细节可以根据你使用的数据库类型(如 MySQL, PostgreSQL 等)进行相应的配置。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!