gorm

创建

// 单条数据插入
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{})