后端小白学习笔记(三):Go框架三件套(Gorm、Kitex、Hertz)| 青训营笔记

198 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 3 天

1、三件套(Gorm、Kitex、Hertz)

Gorm:数据库相关框架

Kitex:微服务框架

Hertz:HTTP框架

2、三件套的使用

Gorm

Gorm的基本使用

grom model:本质上是数据库中的一张表

db.First只能查询一条记录

db.Model需要调用表名

Updates-更新多个字段(传入结构体的时候,注意只会更新非0值;若想要更新0值则可以传递一个map进去)

db.Delete

GORM支持的数据库

GORM可以复用驱动,也可以自行开发驱动

GORM创建数据

Create、Update、Updates、Find等动词都是finish API,当调用了finish API后SQL就会执行,之后再加Where这种条件的话都不会生效

GORM查询数据

First只能查一条数据。因此建议使用Find。因为Find查询多条数据的时候,在查询不到的时候不会报错

对于零值存在的情况,可以使用 map 或者是 select 字段实现

GORM更新数据

使用Update的时候需要配合Model和Where来设置表名,否则会报错

注意第五条:GORM实现SQL表达式更新(进阶用法)

GORM删除数据

物理删除:删了就是真删除了

软删除:实际开发应该使用软件删除,GORM中

GORM事务

GORM能支持防SQL注入

对数据一致性要求比较强,则需要使用事务

db.Bgein会固化链接(不会再使用链接池的链接),注意要使用 'tx' 而不是 'db'

实际开发可能忘了写Rollback或者Commit

GORM使用 Transaction 方法实现自动提交事务,避免用户漏写Rollback或者Commit

建议使用Transaction,避免漏写 Commit 或者 Rollback

GORM Hook

开启hook的时候GORM会开启默认事务,hook操作会在默认事务里面

创建前的hook可以用来做参数校验

创建后的hook用来返回错误

GORM性能提高

GORM生态

Kitex

安装Kitex代码生成工具

定义IDL

使用IDL进行接口修改

协同开发的时候使用IDL

Kitex生成代码

build.sh:生成可执行文件

kitex_gen:主要实现编解码的优化

main.go:程序入口

hanler.go:写service的逻辑

Kitex基础使用

简单的逻辑可以直接写到handler.go中

Kitex Client 发起请求

Kitex服务注册与发现

服务名做服务过滤

Kitex生态

Hertz

Hertz基本使用

server.Default默认集成recover的中间件;server.New默认没有recover的中间件。

hertz支持多种 hook

hertz分为两个上下文,一个传源信息,一个处理请求

Hertz路由

hertz提供handler可以实现自定义的method

hertz可以实现路由分组

hertz提供参数路由和通配路由,路由优先级:静态路由 > 命名路由 > 通配路由

Hertz参数绑定

bind传递指针,注意:不要传递指针的指针

Hertz中间件

打日志、计算耗时等一般会使用中间件

使用 h.Use注册中间件

Hertz Client

Hertz代码生成工具

定义好IDL后可以生成服务端代码,也可以生成客户端代码

Hertz性能

  1. 网络库Netpoll
  2. json优化 Sonic
  3. 使用sync.Pool复用对象协议层数据解析优化

Hertz生态

PS

本文主要作用是作为上课笔记,如有错误,欢迎大家评论指正,我会及时改正