跳到主要内容位置

基于 Gin+Gorm 的增删改查

1. 增加​

1.1 插入单条记录​


user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}

result := db.Create(&user) // 通过数据的指针来创建

user.ID // 返回插入数据的主键
result.Error // 返回 error
result.RowsAffected // 返回插入记录的条数


1.2 插入多条记录​

users := []*User{
User{Name: "Jinzhu", Age: 18, Birthday: time.Now()},
User{Name: "Jackson", Age: 19, Birthday: time.Now()},
}

result := db.Create(users) // pass a slice to insert multiple row

result.Error // returns error
result.RowsAffected // returns inserted records count


1.3 约束式插入​


db.Select("Name", "Age", "CreatedAt").Create(&user)//只插入name age createdat字段部分

db.Omit("Name", "Age", "CreatedAt").Create(&user)//除了name age createdat字段部分,其他字段都插入

1.4 项目快速添加​


db.Select("Name", "Age", "CreatedAt").Create(&user)//只插入name age createdat字段部分

db.Omit("Name", "Age", "CreatedAt").Create(&user)//除了name age createdat字段部分,其他字段都插入

2. 删除​

2.1 删除单条记录​

2.2 删除多条记录​

2.3 根据主键删除记录​

2.4 软删除机制与记录找回​

3. 修改​

3.1 全字段更新​

3.2 更新单列​

3.3 更新多列​

3.4 批量记录更新​

3.5 太多了 看官方文档把​

4. 查询​

4.1 查询单条记录​

4.2 查询多条记录​

4.3 根据主键查询记录​

4.4 条件查询​

4.5 其他复杂查询(用 sql 吧)​

5. 使用原生 SQL 语句​

5.1 一般且最常用的形式​

  1. 使用 raw 函数来执行原生 sql 语句
  2. 并将结果通过 scan 函数扫描到模型中去

type Result struct {
ID int
Name string
Age int
}

var result Result
db.Raw("SELECT id, name, age FROM users WHERE id = ?", 3).Scan(&result)

db.Raw("SELECT id, name, age FROM users WHERE name = ?", "jinzhu").Scan(&result)

var age int
db.Raw("SELECT SUM(age) FROM users WHERE role = ?", "admin").Scan(&age)

var users []User
db.Raw("UPDATE users SET name = ? WHERE age = ? RETURNING id, name", "jinzhu", 20).Scan(&users)