目录:
这一篇的主要介绍如何查
查找第一条记录或者最后一条记录
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)
发表回复