这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
在初步学习了go语言的基本知识后,开始去了解go web开发常用到的框架三件套,他们可以简化我们的开发。
1. 框架三件套
-
Gorm
- Gorm 是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展。
-
Kitex
- Kitex 是字节内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展。
-
Hertz
-
Hertz 是字节内部的 HTTP 框架参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点。
-
这里涉及到的一些知识概念比如orm ,rpc等都需要去学习和了解 ORM : Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来,
对于数据来说,最重要最常用的是表∶表中有列,orm就是将一张表映射成一个类,表中的列映射成类中的一个类。java .、 python,但是针对go语言而言,struct,就是列如何映射,是因为列可以映射成struct中的类型,int->int,但是有另一个问题?就是数据库中的列具备很好的描述性,但是struct有tag。执行sql,需要我们有足够的sql语句基础、需要我们懂得不同的数据的sql
orm的优缺点
优点:
提高了开发效率。 屏蔽sql细节。可以自动对实体Entity对象与数据库中的Table进行字段与属性的映射;不用直接SQL编码 屏蔽各种数据库之间的差异
缺点:
orm会牺牲程序的执行效率和会固定思维模式 太过依赖orm会导致sql理解不够 对于固定的orm依赖过重,导致切换到其他的orm代价高
Gorm入门
可参考官方文档:gorm.io/
声明模型
模型定义
模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer接口的自定义类型及其指针或别名组成
gorm.Model
GORM 定义一个 gorm.Model 结构体,其包括字段 ID、CreatedAt、UpdatedAt、DeletedAt
具体的操作还有很多,就不一一介绍了
参考
官方文档:gorm.io/