这是我参与「第五届青训营 」伴学笔记创作活动的第14天,开始的开始除了准备学习相关的知识,还要规划好每天的日程。
昨天做了一些大项目知识的相关介绍主要是gin框架,今天说一下gorm+gen。
回顾下昨天的介绍
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点。
对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。
借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
今天说下项目中使用的gorm,在大项目中数据库方面的处理使用gorm框架,gorm是一个已经迭代10年+的功能强大的orm框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展,本项目中还使用了代码生成工具gen。
我们已经成功存储数据到数据表,但是所有操作都要自行编写代码,很多编程语言和框架会引入 ORM 来解决模型类与数据表记录的映射关系,ORM 架起了 SQL 语句和应用程序之间的桥梁,将模型类和数据表映射起来,将模型类字段和数据表字段建立关联。
GORM 是一个适用于 Go 语言的 ORM 库,遵循 ActiveRecord 模式进行设计。我们可以使用 GORM,也可以用 Gen 来生成代码,只是 API 层的两种实现,底层的能力都是一样的。gen对自己的定位就是通过代码生成,让 GORM 更加友好(针对复杂SQL场景也能处理),也更加安全(增加类型校验)。
Gen 提供了自动同步数据表结构体到 GORM 模型,使用非常简单,即使数据库字段信息改变,可以一键同步,数据库查询相关代码可以一键生成,CRUD 只需要调用对应的方法。
GEN 采用了类型安全限制,所有参数都做了安全限制,完全不用担心存在注入。
自定义 SQL 只需要通过模板注释到 interface 的方法上,自动生成安全的代码SQL ,也不会出现SQL 注入问题。