创建
// 单条数据插入
result := db.Create(&user)
user.ID // 插入数据的主键
result.Error // 返回 error
result.RowsAffected // 返回插入记录的条数
// 指定字段插入
result := db.Select("Name", "Age", "CreateAdt").Create(&user)
// 忽略字段插入
result := db.Omit("Name", "Age", "CreateAdt").Create(&user)
// 批量数据插入
users := []User{{Name:"xxx"}, {Name:"xxx2"}, {Name:"xxx3"}}
db.Create(&users)
for _,user := range users {
user.ID // 1,2,3
}
查询
// 查询单条
db.First(&user)
db.First(&user, 1)
db.First(&user, "id = ?", 1)
db.Find(&user, []int{1,2,3})
// 查询多条
result := db.Find(&users)
// 查询字段
.Select("string")
.Select(...)
.Select([]string{"name","age"})
// 条件
.Where("format")
.Or("format")
// Not
.Not("format")
.Not(map[string]interface{}{"name":[]string{"a","b",""}})
// 排序
.Order("string")
// 分页
.Offset(-1)
.Limit(-1)
// 分组
.Group("type")
.Having("format")
// 获取查询条数
.Rows()
// Joins("format")
.Joins("left join users on order.user_id = users.id")
// 预加载,带条件的 Join
.Joins("User")
.Joins("User", DB.Where(&User{State:1}))
更新
// 实例
var user User
db.First(&user)
user.Name = "xxx"
db.Save(&user)
// 批量更新
db.Model(&User{}).Where(...).Update("active", 1)
.Updates(map[string]interface{}{"name":"xxx","age":18})
删除
db.Delete(&user)
db.Delete(&User{}, 1)
db.Delete(&User{}, []int{1,2,3})
db.Delete(&User{}, "format")
db.Where("format").Delete(&User{})