这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
主要内容:Gorm、Kitex、Hertz
Gorm基本使用
- 需要有结构体对应数据库中的表。
- 连接数据库,mysql.Open
- 创建数据:db.Create()
- 查询数据 db.First()
- 更新数据 db.Updates()
- 删除数据 db.Delete()
默认使用ID的字段作为主键,字段名的蛇形作为列名。
使用first,需要注意查询不到数据的时候会返回error。使用find查询多条数据,查询不到数据不会返回错误。使用struct更新时,只会更新非零值,如果需要更新零值可以使用Map更新或使用select选择字段。
删除分为物理删除和软删除。
gorm事务:begin、commit、rollback。
gorm性能提高,缓存预编译语句可以提高后续的调用速度。关闭默认的事务。
Kitex的使用
默认监听接口8888 目前Kitex的服务注册与返现已经对接了主流的服务注册和发现中心,如ETCO、Nacos等。Kitex拥有非常丰富的扩展生态,XDS扩展、ETCD服务注册与发现扩展、Zookeeper服务注册与发现扩展。
Hertz的基本使用
使用Hertz实现,服务监听8080端口并注册了一个get。Hertz提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由。
Hertz提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验。Hert中间主要分为客户端中间件和服务端中间件。Hertz提供了HTTP Client用于帮助用户发送HTTP请求。HERTZ提供了代码生成工具HZ,通过定义IDL文件即可生成对应的基础服务代码。Hert性能优秀,网络库使用NetPoll、Json编解码使用Sonic、使用sync.Pool复用对象协议层数据解析优化。Hertz拥有非常丰富的扩展生态。
个人收获
今天的课程讲了go开发的三件套,首先是和数据库相关的gorm,可以更加方便的写sql。然后是kitex是一个rcp框架,最后是Hertz框架。这些都是可以用在最后的大项目中,可以尝试使用。