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