环境说明

  • gorm gorm.io/gorm
  • go go1.16.2
  • gorm v2

步骤说明

注:这里使用的是gorm v2
区别:

// v2
import "gorm.io/gorm"

// v1
import "github.com/jinzhu/gorm"

// AddMember
func (d *Dao) AddMember(member *model.Member) error {
return d.ORM.Table(member.TableName()).Create(member).Error
}

事务新增

// TxAddMember
func (d *Dao) TxAddMembert(tx *gorm.DB, member *member.Member) error {
return tx.Table(member.TableName()).Create(member).Error
}

//DeleteMember
func (d *Dao) DeleteMember(id int64) error {
return d.ORM.Delete(&model.Member{}, id).Error
}

d.ORM.Model(&Member).Update("nickname":"axin")

d.ORM.Model(&Member).Where("id = ?", id).First(&member)

判断记录是否存在

oldMember, err := s.dao.GetMemberById(member.Id)
if errors.Is(err, gorm.ErrRecordNotFound) {
// 不存在 插入数据
// do something
} else {
// 存在 更新数据
// do something
}

if err != nil {
panic(err)
}

// GetMemberById
func (d *Dao) GetMemberById(Id int64) (*model.Member, error) {
member := &model.Task{}
err := d.ORM.Table(member.TableName()).Where("id = ?", Id).First(member).Error
if err != nil {
return member, err
}
return member, nil
}

参考文献

官方文档

错误处理