前言
GORM是一个使用Go语言编写的ORM框架,它支持主流的数据库,可以让我们通过Go来操作数据库中的数据。
特性
gorm十分强大,支持许多功能
-
关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
-
Create,Save,Update,Delete,Find 中钩子方法
-
事务处理
- 提供事务管理功能,包括嵌套事务、Save Point和Rollback To Saved Point等。
- 能够使用Context来管理事务,同时支持预编译模式和DryRun模式。
-
高级SQL功能
- 提供SQL构建器,支持Upsert操作、数据库锁、Optimizer/Index/Comment Hint等功能。
- 支持命名参数和子查询,增强了查询灵活性。
-
可靠性和开发友好
- 每个特性都经过充分测试,保证了框架的稳定性和质量。
- 文档完善,设计开发者友好,提供了简洁而强大的API接口,降低了使用难度。
gorm实现CRUD
create
新建一条记录
user := User{Name: "zhangsan", Age: 24}
result := db.Create(&user) //新增数据
result.Error //返回error
result.RowAffected //返回影响行数
新建多条数据
users := []User{{Name: "zhangsan", Age: 25}, {Name: "lisi", Age: 20}}
db.Create(&users)
delete
硬删除
type User struct {
Name string
Age int
}
// DELETE from `users` where `users`.`id` = 10;
db.Delete(&User{}, 10)
软删除
type User struct {
gorm.Model
Name string
Age int
}
// 更新gorm.Model中的deleted_at字段
db.Delete(&User{}, 10)
read
// 获取第一条匹配的记录
db.Where("name = ?", "lisi").First(&user)
//模糊查询
db.Where("name LIKE ?", "%han%").Find(&users)
update
// 条件更新
db.Model(&User{}).Where("id = ?", 1).Update("name", "wangwu")
小结
使用gorm前要导入包和数据库驱动
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
gorm的用法太多太多,这里只是简单涉及一些基础操作,真正要学懂gorm一定要去官网看文档,里面有详细的代码和解释,而且一定要上手多敲