参考文献

官方文档

环境说明

  • 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
}