go 三件套之一(gorm) | 青训营笔记

111 阅读2分钟

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

go 三件套之一(gorm)

最近学习golang语言,然后想要了解一下golang连接数据库,正好青训营的课就教到了golang 连接数据库的一个框架gorm,

一、本堂课重点内容

重点学习了gorm 框架,gorm 是一个操作数据库的orm框架, orm 框架的作用就是对数据库的表进行一个对象映射,使得我们操作数据库的时候不需要和sql打交道,直接操作对象就行。

二、详细知识点介绍和实践练习例子

gorm的curd操作 首先连接数据库 需要注册数据库的连接驱动 (可能是我版本的问题,和视频有些不一样,) 注册驱动只需要 导入驱动包,然后用的里面的init函数就行

import _ "github.com/go-sql-driver/mysql"

db := "root:xtc@tcp(127.0.0.1:3306)/test_gorm?charset=utf8mb4&parseTime=True&loc=Local"

db, err := gorm.Open("mysql", dsn)

gorm 是可以通过db.AutoMigrate(&struct{}) 自动迁移创建表,但是我觉得和更喜欢直接在数据库建表,然后通过框架进行CURD的操作,

gorm的CURD 看了课程,后续去了一些文档 查操作(Find,First....) 如果传递的是结构体来传值,

  • db.First() 返回第一条数据,
  • db.Last()最后一条数据
  • db.Take()返回一条数据
  • db.Find()返回多条数据

第一个参数是你存储查询内容的对象 都可以中间使用where 语句进行过滤查询

db.Where().First()

Where()函数可以通过结构体进行查询,但是不会对结构体的默认值属性进行条件拼接

增加操作(Create)

db.Create(&struct) 第一个参数为插入的对象, 第一个参数也可以定义为结构体数组进行批量删除,

删除操作(Delete)

db.Delete() 配合Where()实现批量删除

更新操作(Update) db.Update()

当使用 Update 更新单个列时,你需要指定条件,否则会返回 ErrMissingWhereClause 错误

db.Model(&User{}).Where("active = ?", true).Update("name", "hello")

UPDATE users SET name='hello', updated_at='2013-11-17 21:34:10' WHERE active=true;

三 课后总结

总体来说,grom是一个简洁和对开发者友好的orm框架。gorm整体作用类似于,我学习过的Java 连接数据库的orm框架Mybatis,但是我个人感觉,可能得益于go语言的语言特点,它显得更加简洁干练,