Gorm 单表操作 查询数据

单表记录查询

	//单表记录的查询,
	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":"[email protected]"}

 因为指针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>}]

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/132026548