Create基本使用
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}//创建用户
resoult :=db.Create(&user)//向表中添加字段,结果返回resoul
result.Error
- 含义:这是一个错误对象,表示在执行数据库操作过程中是否发生了错误。
- 用途:通过检查
result.Error,你可以判断数据库操作是否成功。如果result.Error为nil,则表示操作成功;否则,它会包含具体的错误信息。 - 示例:
result := db.Create(&user)
if result.Error != nil {
fmt.Println("Error:", result.Error)
} else {
fmt.Println("User created successfully")
}
result.RowsAffected
含义:这是一个整数值,表示数据库操作影响的行数。 用途:通过检查 result.RowsAffected,你可以知道操作影响了多少行数据。对于插入操作,通常这个值是 1,因为一次 Create 调用通常只插入一条记录。对于更新或删除操作,这个值可能会更大,因为它可能反映了多条记录的变化。 示例:
result := db.Create(&user)
fmt.Println("Rows affected:",result.RowsAffected)
Create批量增加
users := []*User{
{Name: "Jinzhu", Age: 18, Birthday: time.Now()},
{Name: "Jackson", Age: 19, Birthday: time.Now()},
}
result := db.Create(users)
result.Error
result.RowsAffected
查询方法的使用
GORM 提供了 First、Take 和 Last 方法来从数据库中检索单个对象。这些方法在查询数据库时会添加 LIMIT 1 条件,并且如果未找到记录,会返回 ErrRecordNotFound 错误。
db.First(&user)
// SELECT * FROM users ORDER BY id LIMIT 1;
// 获取一条记录,没有指定顺序
db.Take(&user)
// SELECT * FROM users LIMIT 1;
// 获取按主键降序排序的最后一条记录
db.Last(&user)
// SELECT * FROM users ORDER BY id DESC LIMIT 1;
更新方法的使用
db.First(&user)
user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)
// UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_at = '2013-11-17 21:34:10' WHERE id=111;
Save 是一个组合函数。如果保存的值不包含主键,它将执行 Create,否则它将执行 Update(更新所有字段)。
db.Save(&User{Name: "jinzhu", Age: 100})
// INSERT INTO `users` (`name`,`age`,`birthday`,`update_at`) VALUES ("jinzhu",100,"0000-00-00 00:00:00","0000-00-00 00:00:00")
db.Save(&User{ID: 1, Name: "jinzhu", Age: 100})
// UPDATE `users` SET `name`="jinzhu",`age`=100,`birthday`="0000-00-00 00:00:00",`update_at`="0000-00-00 00:00:00" WHERE `id` = 1
删除方法的使用
// Email's ID is `10`
db.Delete(&email)
// DELETE from emails where id = 10;
// Delete with additional conditions
db.Where("name = ?", "jinzhu").Delete(&email)
// DELETE from emails where id = 10 AND name = "jinzhu";
根据主键ID删除记录
db.Delete(&User{}, 10)
// DELETE FROM users WHERE id = 10;
db.Delete(&User{}, "10")
// DELETE FROM users WHERE id = 10;
db.Delete(&users, []int{1,2,3})
// DELETE FROM users WHERE id IN (1,2,3);
如有错误,欢迎大家指出