gorm模块学习记录

时间:2025-03-08 07:52:03
// 单个 var s Student db.First(&s) // 主键排序返回第一个 fmt.Println(s) var s1 Student db.Last(&s1) // 主键倒序返回第一个 fmt.Println(s1) var s3 Student db.Take(&s3) // 任意一个结果 // 主键检索 var s4 Student db.First(&s4, 1) // 主键 = 1 fmt.Println(s4) var s5 Student db.First(&s5, "2") // 主键 = 2 字符串与整型一样的效果 fmt.Println(s5) var s6 Student db.Find(&s6, []int{1, 2, 3}) // 主键 in (1,2,3) fmt.Println(s6) // 检索全部 var c = make([]Class, 0) rst := db.Find(&c) fmt.Println(rst.RowsAffected) fmt.Println(c) fmt.Println(len(c)) // 条件检索 var c2 = make([]Class, 0) db.Where("my_name = ?", "一年级一班").Find(&c2) // 这里的条件是数据库中的字段条件 fmt.Println(c2) // like var c3 = make([]Class, 0) db.Where("my_name like ?", "一年级%").Find(&c3) fmt.Println(c3) fmt.Println(len(c3)) // between and var c4 = make([]Class, 0) db.Where("updated_at between ? and ?", time.Now().Add(-24*time.Hour), time.Now()).Find(&c4) fmt.Println(c4) fmt.Println(len(c4)) // 结构体多条件 var c5 = make([]Class, 0) db.Where(&Class{ID: 100}).Find(&c5) fmt.Println(c5) // map 多条件 var c6 = make([]Class, 0) db.Where(map[string]string{"my_name": "三年二班"}).Find(&c6) // map 中的字段也是数据库中的字段 fmt.Println(c6) // Find 字符串查询 var c7 = make([]Class, 0) db.Find(&c7, "my_name", "三年二班") fmt.Println(c7) var c8 = make([]Class, 0) db.Find(&c8, &Class{Name: "一年级二班"}) fmt.Println(c8) // 取反 Not 和 Where相似 var c9 = make([]Class, 0) db.Not("my_name = ?", "三年二班").Find(&c9) fmt.Println(c9) // or var c10 = make([]Class, 0) db.Where("my_name = ?", "三年三班").Or("id < ?", 100).Order("id desc").Find(&c10) // order在最后没用 Find在最后才有用 fmt.Println(c10) // 查询指定字段 除了指定字段,其余的都是零值 var c11 = make([]Class, 0) db.Select("my_name", "id").Find(&c11, "id < ?", "10") fmt.Println(c11) // limit offset var c12 = make([]Class, 0) db.Offset(5).Limit(10).Find(&c12) fmt.Println(c12)