Go框架三件套(Web/RPC/ORM)
Gorm
Object-Relationl Mapping,连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。即Gorm是go语言中实现对象和数据库映射的框架(主要是把 struct类型 和 数据库表 进行映射,使用简单方便),可以有效地提高开发数据库应用的效率
·Gorm的基本使用
o定义gorm model
o为model定义表名
o连接数据库
o创建数据
o查询数据
o更新数据
o删除数据
·Gorm支持的数据库
oGorm目前支持MySQL、SQLServer、PostgreSQL
oGorm通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动
·Gorm 创建数据
o如何使用 Upsert ?
o如何使用默认值?
·Gorm 查询数据
·Gorm 更新数据
·Gorm 删除数据
物理删除:db.Delete(),真的在删除了。 软删除:gorm.DeletedAt(),拥有软删除能力的 Model 调用 Delete 时,记录不会被从数据库中真正删除。但 GORM 会将 DeletedAt 置为当前时间,并且你不能再通过正常的查询方法找到该记录。使用Unscoped可以查询到被软删的数据 。
·Gorm 事务
oGrom 提供了Begin、Commit、Rollback方法用于使用事务
oGrom 提供了Tansaction 方法用于自动提交事务,避免用户漏写Commit、Rollback、Gorm Hook
oGorm 在提供了CURD的 Hook 能力
oHook是在创建、查询、更新、删除等操作之前、之后自动调用的函数
o如果任何Hook返回错误,Gorm将停止后续的操作并回滚事务
Kitex
· 安装Kitex代码生成工具
· 定义IDL
o 使用IDL定义服务与接口
· Kitex生成代码
o 使用 kitex -module example -service example echo.thrift 命令生成代码
· Kitex 基本使用
o 服务默认监听8888端口
· Kitex Client 发起请求
o 创建Client
o 发起请求
· Kitex 服务注册与发现
o 目前Kitex的服务注册与发现已经对接了主流的服务注册与发现中心,如ETCD,Nacos等
· Kitex 生态
Hertz
o Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由
o Hertz提供了路由器(Group)的能力,用于支持路由分组的功能。
o Hertz提供了参数路径和通配路由,路由的优先级为:静态路由 > 命名路由 > 通配路由
· Hertz 参数绑定
o Hertz 提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验
· Hertz 中间件
o Hertz的中间件主要分为客户端中间件和服务端中间件。