目录:
这一篇的主要介绍如何查
查找第一条记录或者最后一条记录
user := models.Users{} user2 := models.Users{} user3 := models.Users{} db.First(&user) //第一个, 默认主键升序 fmt.Println(user) db.Last(&user2) //最后一个, 默认主键降序 fmt.Println(user2) db.Take(&user3) //获取一条记录, 没有指定排序字段 fmt.Println(user3)
注意, First,Last,Take都会抛出异常,可以使用err = db.Task().Error来判断是否查询成功
查找所有记录
var users []models.Users db.Find(&users) // 获取所有记录 fmt.Println(users)
注意,Find函数不会抛出异常,我也没有查到更好的判断是否查询成功的方法,目前我是方法是判断切片的长度
查找主键在指定切片范围的记录
var users1 []models.Users db.Find(&users1, []int{1, 2, 3, 4}) //查找主键为1,2,3,4的用户 fmt.Println(users1)
指定主键来查询
user4 := models.Users{} db.First(&user4, 10) //主键为10的用户 fmt.Println(user4) user5 := models.Users{} db.First(&user5, "id = ?", "2") //如果主键为字符串, 那么可以写成 fmt.Println(user5)
where条件,字符串类型
user := models.Users{} db.Where("profile = ?", "Z05CLIU").First(&user) //profile为z05cliu的用户 fmt.Println(user) users := []models.Users{} db.Where("profile <> ?", "Z05CLIU").Find(&users) //profile不为z05cliu的用户 fmt.Println(users) users2 := []models.Users{} db.Where("profile in ?", []string{"Z05CLIU", "Z30BYAO"}).Find(&users2) //profile为z05cliu和z30byao的用户 fmt.Println(users2) users3 := []models.Users{} db.Where("profile like ?", "%Z05%").Find(&users3) //profile中间有z05的用户 fmt.Println(users3)
where条件,切片或结构体类型
user := models.Users{} db.Where(models.Users{Profile: "Z05CLIU"}).Find(&user) //使用结构体指定条件 fmt.Println(user) user1 := models.Users{} db.Where(map[string]interface{}{"Profile": "Z05CLIU"}).Find(&user1) //使用map指定条件 fmt.Println(user1)
发表回复