web三件套| 青训营笔记

42 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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" 定义行

创建数据

  1. 新建结构体填好数据
  2. db.Create(&struct) 结构体 即可创建数据
    其他: db.Create可以是切片,来创建多条数据

查询数据

1.新建一个空结构体
2. db.First,查询到第一个数据

需要注意的是,First在查询不到数据会返回ErrRecordNotFound这个错误 查询多条数据可以

  1. 新建一个空结构体切片
  2. db.Where(Sql语句,问号1,问号2,问号n的值).Find(结构体)

更新数据

  1. db.Model(&结构体).Where(条件).Update(行,数值) 相当于 Update users Set 行='数值' Where 条件

  2. db.Model(&结构体{主键}).Update(结构体{目标数据})

相当于 Update users set 目标数据 where 主键

  1. 使用Select选定字段后,只会更新选定的字段

  2. 更新多个数值可以采用`map[sting]interface{}

删除数据

  1. db.Delete(空结构体,主键) 删除值为主键的数据
  2. db.Where("条件").delete(空结构体) 删除满足条件的数据
  3. 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可以极大提高效率