这是我参与「第五届青训营 」伴学笔记创作活动的第 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语言的语言特点,它显得更加简洁干练,