这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天。今天主要学习了Go的框架三件套,认识到了当前Go项目开发和运行的方式,获得了很大启发。
Go框架三件套
- Gorm:ORM框架(丰富的开源拓展)
- Kitex:Golang微服务的RPC框架。(高性能,强可拓展)
- Hertz:HTTP框架(高易用性,高性能,高拓展性)
Gorm框架
ORM框架
Object-Relationl Mapping,连接数据库的桥梁,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。
即Gorm是go语言中实现对象和数据库映射的框架(主要是把 struct类型 和 数据库表 进行映射,使用简单方便),可以有效地提高开发数据库应用的效率。
基本使用
- 定义gorm model(struct类型)
- 通过函数为model定义表名
- main配置数据库连接参数
- 通过前面的数据库参数,拼接 Mysql DSN,其实就是数据库连接串(数据源名称)
- Mysql dsn格式: {username}:{password}@tcp({host}:{port})/{Dbname}?charset=utf8&parseTime=True&loc=Local
- gorm.Open连接数据库,使用返回值操作数据
- 使用db,创建,查询,更新,删除数据。
注意事项:1、如何使用upsert:使用clause.OnConflict处理数据冲突;2、如何使用默认值:通过使用default标签为字段定义默认值。3、First查询一条数据和多条数据时的查询不到后者不返回错误;4、对于查询和更新0字段,一般Gorm会越过不处理,要使用Map更新或Select选择字段。
物理删除和软删除
物理删除:db.Delete(),真的在删除了。 软删除:gorm.DeletedAt(),拥有软删除能力的 Model 调用 Delete 时,记录不会被从数据库中真正删除。但 GORM 会将 DeletedAt 置为当前时间,并且你不能再通过正常的查询方法找到该记录。使用Unscoped可以查询到被软删的数据 。
事务处理
1、自动事务处理 2、手动事务处理
参考了课件和其他同学的笔记,未完待续 [](Go的框架三件套 | 青训营笔记 - 掘金 (juejin.cn))