这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
一、本堂课重点内容:
- Go框架三件套介绍
- Gorm、Hertz、Kitex的基本用法与常见API
- 三件套实战案例
二、详细知识点介绍:
-
三件套简介
- Gorm是迭代了10+年的强大ORM框架
- Kitex是Golang微服务RPC框架,高性能、强拓展性
- Hertz是Golang开源的Http框架,高易用性、高性能、高扩展性
-
三件套基础使用
- Gorm
- 使用结构体对应数据库中的表
- 通过dsn字符串来连接数据库 user:password@tcp(host:port)/dbname?charset=utf8
- create 创建数据
- first find 查询数据
- 使用first查询数据 如果没有数据,会返回ErrRecordNotFound
- 使用find查询 如果没有数据 不会返回错误
- 查询时 如果使用结构体作为查询条件 gorm只会将非零值作为条件进行查询 否则不会被构成查询条件
- Update Updates(传递map可以更新零值) 来更新数据
- 如果使用结构体作为参数传入 则只会更新非零值
- 使用select来更新选定字段
- Delete 删除数据(物理删除)
- gorm 提供了 DeleteAt 来使用软删
- 在增删改数据时遇到数据冲突 使用 clause.OnConflict()来处理冲突
- db.Begin() 开启事务 Rollback 回滚 Commit 提交事务
- 要使用begin返回的对象来进行接下来的操作
- Hook 是在创建、查询、更新、删除等操作之前、之后自动调用的函数 (会自动开启事务)
- 可以使用SkipDefaultTransaction来关闭默认事务 提高性能
- 使用PrepareStmt 缓存预编译来提高后续调用速度
- kitex
- 首先使用IDL定义服务与接口
- 使用kitex -module example -sevice example echo.thrift
- 在生成文件中的handler.go来编写业务代码
- 能够对接主流的服务注册与发现中心 etcd等
- Hertz
- 使用new 或 default 新建hertz对象
- 支持参数路由、通配路由 优先级:静态路由>参数路由(:)>通配路由(*)
- Gorm
三、课后个人总结:
通过本节课 了解了go框架三件套的介绍,简单的了解了三件套的用法以及优点
通过一个小项目简单的掌握了三件套的使用