gorm curd封装
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 等)进行相应的配置。

