最近使用gorm做业务开发,为了更加高效地开发,做如下总结:
Gorm
CURD模板
查
user := User{
Name: "drs",
Age: 20,
}
db.Find(&user)
db.Select("Name").Find(&user)
增
user := User{
Name: "drs",
Age: 20,
}
// 直接创建
db.Create(&user)
// 使用Select选择结构体字段,进行创建
db.Select("Name").Create(&user)
// 冲突时更新,无冲突时创建
db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "Name"}},
DoUpdates: clause.AssignmentColumns([]string{"Age"}),
}).Create(&user)
users := []User{{Name: "drs1"},{Name: "drs2"},{Name: "drs3"}}
// 批量创建
db.Create(&users)
// 批量创建 冲突时更新,无冲突时创建
db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "Name"}},
DoUpdates: clause.AssignmentColumns([]string{"Age"}),
}).Create(&users)
// 批量创建 可指定创建的数量
db.CreateInBatches(&users,2)
改
user := User{
Name: "drs",
Age: 20,
}
// 使用Select选择结构体字段,进行更新
db.Model(&user).Select("Name","Age").Updates(user)
// 批量更新
db.Model(&user).Where("id in (?)",[]int64{10,11}).Updates(map[string]interface{}{"name": "zs", "age": 18})
删
db.Where("name = ?","zs").Delete(&user)
Select
Select 可以用来选择结构体的字段(大写),也可以用来选择数据表的列(小写)