gorm update返回受影响行数

在 GORM 中,你可以使用 Updates 方法更新数据库记录并获取受影响的行数。以下是一个示例,演示如何更新用户的电子邮件并获取受影响的行数:

package main

import (
	"fmt"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

type User struct {
	ID        uint   `gorm:"primaryKey"`
	FirstName string `gorm:"size:255"`
	LastName  string `gorm:"size:255"`
	Email     string `gorm:"size:255;unique"`
}

func main() {
	db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
	if err != nil {
		panic("Failed to connect to database.")
	}

	db.AutoMigrate(&User{})

	affectedRows := updateUserEmail(db, 1, "new-email@example.com")
	fmt.Printf("Number of affected rows: %d\n", affectedRows)
}

func updateUserEmail(db *gorm.DB, id uint, newEmail string) int64 {
	var user User
	result := db.Model(&user).Where("id = ?", id).Updates(map[string]interface{}{
		"email": newEmail,
	})
	return result.RowsAffected
}

在这个示例中,我们定义了一个 updateUserEmail 函数,该函数接受数据库连接、用户 ID 和新的电子邮件地址作为参数。在函数内部,我们首先定义了一个 User 类型的变量 user。然后,我们使用 db.Model(&user) 指定要更新的模型,并使用 Where(“id = ?”, id) 语句添加筛选条件。接下来,我们调用 Updates 方法并传入一个包含要更新的字段的映射。在这个例子中,我们只更新 email 字段。

Updates 方法返回一个 gorm.DB 类型的值,该值包含 RowsAffected 字段。RowsAffected 字段表示受影响的行数,可以用来判断更新操作是否成功。如果 RowsAffected 大于 0,表示至少有一行受到影响,更新操作成功。如果 RowsAffected 等于 0,表示没有行受到影响,可能是因为没有找到具有指定 ID 的用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值