gorm模块学习记录
// 单个
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)