单表记录查询
//单表记录的查询,
var s Student
db.Debug().Take(&Student{})
fmt.Println(s)
[1.034ms] [rows:1] SELECT * FROM `students` LIMIT 1
{0 0 false <nil>}
first就是按照主键排序,last就是按照主键倒排。
//单表记录的查询,
var s Student
db.Take(&Student{})
fmt.Println(s)
//因为student结构体里面有数据了,这里要让其清空
s = Student{}
db.Debug().First(&Student{})
fmt.Println(s)
s = Student{}
db.Debug().Last(&Student{})
fmt.Println(s)
[0.506ms] [rows:1] SELECT * FROM `students` ORDER BY `students`.`id` LIMIT 1
{0 0 false <nil>}
[0.506ms] [rows:1] SELECT * FROM `students` ORDER BY `students`.`id` DESC LIMIT 1
{0 0 false <nil>}
根据主键的ID查询
//单表记录的查询,可以使用err去捕获这个异常
var s Student
err := db.Debug().Take(&s, 1).Error
fmt.Println(err == nil)
fmt.Printf("%#v", s)
[1.278ms] [rows:1] SELECT * FROM `students` WHERE `students`.`id` = 1 LIMIT 1
true
main.Student{ID:0x1, Name:"lu", Age:21, Gender:true, Email:(*string)(0xc000209180)}
根据name来查询,这里一定要使用?去进行一个拼接,这个数值可能是前端传递过来的。
//单表记录的查询,可以使用err去捕获这个异常
var s Student
err := db.Debug().Take(&s, "name = ?", "lu").Error
fmt.Println(err == nil)
fmt.Printf("%#v", s)
[0.616ms] [rows:1] SELECT * FROM `students` WHERE name = 'lu' LIMIT 1
true
main.Student{ID:0x1, Name:"lu", Age:21, Gender:true, Email:(*string)(0xc0001cb230)}
或者
db.Take(&s, fmt.Sprintf("name = '%s'", "lu"))
fmt.Printf("%#v", s)
查询多条记录,将其变为切片就行了。
var s []Student
db.Debug().Find(&s)
fmt.Printf("%#v", s)
for _, v := range s {
fmt.Println(v)
}
type Student struct {
ID uint `gorm:"size:3" json:"id"`
Name string `gorm:"size:3" json:"name"`
Age int `gorm:"size:3" json:"age"`
Gender bool
Email *string `gorm:"size:32" json:"email"`
}
var s []Student
count := db.Debug().Find(&s).RowsAffected
fmt.Println(count)
for _, v := range s {
fmt.Println(v)
data, _ := json.Marshal(v)
fmt.Println(string(data))
}
[0.889ms] [rows:25] SELECT * FROM `students`
25
{1 lu 21 true 0xc0001cb270}
{"id":1,"name":"lu","age":21,"Gender":true,"email":"123@qq.com"}
因为指针id是看不懂的,通过json转化就可以变为看的懂的。
var s []Student
count := db.Debug().Find(&s, []int{1, 2, 3}).RowsAffected
fmt.Println(count, s)
[4.537ms] [rows:3] SELECT * FROM `students` WHERE `students`.`id` IN (1,2,3)
3 [{1 lu 21 true 0xc00020a0b0} {2 21 true <nil>} {3 21 true <nil>}]