u := User{Username: "test",Password: "123456"} fmt.Println(db.NewRecord(&u)) //判断主键是否为空,表中是否存在主键冲突,如果以Id为主键改判断可以忽略 db.Create(&u) fmt.Println(db.NewRecord(&u))
查询数据
查询第一条数据
1 2 3 4 5 6
var firstValue User db.First(&firstValue) fmt.Println("username:",firstValue.Username)
//使用debug查询执行原始语句 db.Debug().First(&User{})
查询最后一条数据
1 2 3 4
//查询最后一条数据 var lastValue User db.Last(&lastValue) fmt.Println("last username:",lastValue.Username)
根据条件筛选
where 条件筛选
1 2 3 4 5 6
// 条件筛选 var users [] User db.Where("username = ?", "roddy").Find(&users) for _,v := range users{ fmt.Printf("username:%v password:%v\n",v.Username,v.Password) }
// 获取第一个匹配的记录 db.Where("name = ?", "jinzhu").First(&user) //// SELECT * FROM users WHERE name = 'jinzhu' limit 1;
// 获取所有匹配的记录 db.Where("name = ?", "jinzhu").Find(&users) //// SELECT * FROM users WHERE name = 'jinzhu';
// <> db.Where("name <> ?", "jinzhu").Find(&users) //// SELECT * FROM users WHERE name <> 'jinzhu';
// IN db.Where("name IN (?)", []string{"jinzhu", "jinzhu 2"}).Find(&users) //// SELECT * FROM users WHERE name in ('jinzhu','jinzhu 2');
// LIKE db.Where("name LIKE ?", "%jin%").Find(&users) //// SELECT * FROM users WHERE name LIKE '%jin%';
// AND db.Where("name = ? AND age >= ?", "jinzhu", "22").Find(&users) //// SELECT * FROM users WHERE name = 'jinzhu' AND age >= 22;
// Time db.Where("updated_at > ?", lastWeek).Find(&users) //// SELECT * FROM users WHERE updated_at > '2000-01-01 00:00:00';
// BETWEEN db.Where("created_at BETWEEN ? AND ?", lastWeek, today).Find(&users) //// SELECT * FROM users WHERE created_at BETWEEN '2000-01-01 00:00:00' AND '2000-01-08 00:00:00';