在 GORM 中,.Find() 和 .Scan() 都可以用于检索数据库记录,但它们之间存在一些差异,并不完全等同于彼此。
使用例子
Find 方法的使用例子
- 查找单一记录:
var result models.MyModel
db.Where(“id = ?”, 1).Find(&result)
这个例子中,我们查找 id 为 1 的记录,并将结果填充到 result 变量中。
- 查找多个记录并排序:
var results []models.MyModel
db.Where(“active = ?”, true).Order(“created_at desc”).Find(&results)
这里,我们查找所有 active 为 true 的记录,并将它们按 created_at 时间戳降序排列,结果被填充到 results 切片中。
Scan 方法的使用例子
- 读取单条记录:
var result models.MyModel
db.Table(“my_table”).Where(“id = ?”, 1).Scan(&result)
在这个例子中,我们直接从 my_table 表中读取 id 为 1 的记录,并将结果填充到 result 变量中。
- 读取多条记录:
var results []models.MyModel
db.Table(“my_table”).Where(“active = ?”, true).Scan(&results)
这里,我们从 my_