这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
什么是三件套
gorm是一款强大的Orm框架 Kitex是字节的微服务Rpc框架 Hertz是字节内部的Http框架
GORM的基本使用
gorm的struct实现TableName接口可以为model定义表名
db.Create() //创建数据
db.First 查询数据
db.Model.Update 感谢数据
db.Delete删除数据
GORM支持什么
gorm支持mysql,sqlserver,postgreSql,sqllite等 数据库. gorm是通过驱动连接数据库的,可以自定义驱动来使用对应的数据库
Gorm常用标签
gorm:"default:value" 定义默认值 gorm:"column:value" 定义行
创建数据
- 新建结构体填好数据
- db.Create(&struct) 结构体 即可创建数据
其他: db.Create可以是切片,来创建多条数据
查询数据
1.新建一个空结构体
2. db.First,查询到第一个数据
需要注意的是,First在查询不到数据会返回ErrRecordNotFound这个错误 查询多条数据可以
- 新建一个空结构体切片
- db.Where(Sql语句,问号1,问号2,问号n的值).Find(结构体)
更新数据
-
db.Model(&结构体).Where(条件).Update(行,数值) 相当于 Update users Set 行='数值' Where 条件
-
db.Model(&结构体{主键}).Update(结构体{目标数据})
相当于 Update users set 目标数据 where 主键
-
使用Select选定字段后,只会更新选定的字段
-
更新多个数值可以采用`map[sting]interface{}
删除数据
- db.Delete(空结构体,主键) 删除值为主键的数据
- db.Where("条件").delete(空结构体) 删除满足条件的数据
- db.Delete(空结构体,条件)
事务
事务,首先采用db.Begin()获取一个链接,比如说
tx:=db.Begin
后续事务都得使用tx而非db
tx.Create 语句, 如果出错则tx.Rollback
if err=tx.Create(&User{Name: "nam"}).Error; err!=nil{
tx.Rollback()
}
性能提高
gorm.Config中,PrepareStmt:true可以极大提高效率