GORM | 青训营

90 阅读2分钟

GORM

引言

在这次青训营的课程中,笔者深入了解了GORM这个Go语言中强大的ORM库。作为一名后端开发者,主要学习到了GORM在简化数据库操作上的神奇之处。与此同时,笔者也想到了前端的一些并行发展,比如prisma等。

GORM带来的种种便利

数据操作方便

通过GORM,笔者了解到了如何用更简单的Go代码进行数据库的CRUD操作。这一点与之前手动操作SQL有着天壤之别。使用GORM之后,再也不用担心SQL语句的各种细节问题了。

高级查询

GORM的预加载(Preload)和Joins功能在处理复杂查询时省了不少功夫。以前可能需要多条SQL语句才能完成的任务,现在只需要一两行Go代码。

事务管理

GORM还支持事务管理,这在处理多步操作时非常有用。最它甚至支持嵌套事务和保存点,这使得开发过程中能够更加得心应手。

定制和可扩展

GORM还允许自定义日志和使用插件,这样就可以根据项目的实际需求进行更多的定制。

实操经验

字段选择

在使用GORM进行数据库操作时,db.Selectdb.Omit是最常用到的功能。这两个方法可以精确地控制哪些字段需要被查询或更新。

// 选择'name'和'age'字段
db.Select("name", "age").Find(&users)

处理零值

当涉及到Go的默认零值(比如0、""、false)时,需要特别小心。GORM允许我们通过WhereUpdate方法来明确地处理这些情况。

// 更新年龄为0的用户
db.Model(&User{}).Where("age = ?", 0).Update("name", "new_name")

批量操作

GORM支持批量插入和更新,这在处理大量数据时非常有用。

// 批量插入
db.CreateInBatches(users, 100)

软删除

GORM默认支持软删除,这对于需要保留删除记录的系统来说是个非常好的功能。

// 查找所有被软删除的记录
db.Unscoped().Where("deleted_at IS NOT NULL").Find(&users)

个人总结

其实GORM作为一个操作数据库的桥梁,扮演了非常重要的角色。对于后端开发,简化数据库的一些逻辑,非常省力!