Go 框架三件套详解(Web/RPC/ORM)| 青训营笔记

107 阅读3分钟

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

本次课程介绍的是go框架三件套,下方是框架的链接

gorm

首先先介绍一下什么是orm

ORM(object relational mapping)

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。是连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。

gorm是基于go语言开发的框架,目前支持mysql一些主流的数据库驱动。gorm是支持自定义数据库驱动的。

接下来介绍一下数据库的CURD

create

定义表的数据结构,利用gorm 与 数据连接

这里的data认为是数据的指针

_,err:= db.create(data)

避免数据冲突可以利用db.Clause进行数据创建

find

First() 寻找第一条数据

需要注意的一点first 当未查到数据 会返回报错,而find进行查询未找到是不会报错的

db.Where(“name = ? AND age 〉?“,”yi“,"23").Find(&data)
//SELECT * FROM DATA WHRER name = "yi" AND age > 23

若要选择指定的列

db.Select([]string{"name","age"}).Where("id >","2").Take(&data)

update

db.Model(&data{ ID:111}).Update(map[string]interface{}{"name":"er","age":23})
//update data SET name = er, age = 23 Where id = 111

delete

db.Where("id >","2").Delete(&data)
  • 物理删除:通常也被叫做硬删除,即直接将该记录从数据库中删除。但是是人总会犯错误,在误操作删除了重要数据后,如果想要恢复该数据,需要锁表再去访问日志文件。这样会造成大量的人力资源浪费。
  • 逻辑删除:也叫标记删除,或者软删除。与我们常说的删除不同,并不是真的从数据库中将这条记录去除,而是会设置一个字段,标记删除状态。当该字段为0的时候为未删除状态。

gorm删除存在软删除,在字段中增加DeleteAt自动会调用软删除。如果我们想查询到已经被软删除的 record,可以在 GORM 查询时加上 Unscoped。

事务

gorm 也提供begin,rollback,commit 用作事务提交。为了避免有时候会漏写rollback可直接使用transaction进行事务创建,

此外gorm为了提供更好的性能,也提供一些插件默认配置优化性能如 打开preparestmt可以提高速度。

kitex

IDL

IDL是用来描述软件组件接口的一种计算机语言。IDL通过一种中立的方式来描述,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。

如果要进行rpc,我们就需要知道对应的接口,返回值。因此我们就需要使用IDL双方规定好接口和交互的方式。

kitex 支持protobuf和thift 这两者协议语言。

kitex可以根据协议进行解析生成对应的代码模型。我们只需要根据我们的需要实现内部功能函数即可使用。

hertz

这是一个基于go的一个http框架

它提供了GET,POST等一些基础方法进行路由注册。

同时支持路由组和 中间件绑定等操作。

这些框架内容依托项目能够对其更好的利用。