说明:天天都是CRUD,就这连个事务都很少用到,gorm其实吧,就算有用到时候,去找,都很可能忽略到一些非常方便的地方,所以,我就打算对gorm官方文档再写一遍注释,当然了对于特别浅显的地方我会一笔带过,对于我写项目中遇到过的,但是gorm中有但是可能没写的,或者不好让人发现的我都会用简单的语言给写出来,让大家意识到,哇,这个东西挺好用的,每天约花费一个小时写注释解释,直到写完
官方文档:https://gorm.io/zh_CN/docs/create.html
入门指南
概述
这个部分讲了-安装,其实就是go get
快速入门中写了一个例子,连接了数据库,自动迁移表,就是根据结构体创建一个表
接着就是简单的增删改查
声明模型
模型定义
就是结构体
约定
默认ID为主键
默认结构体名的蛇形复数作为表明
字段名的蛇形为列名
当然了,当你不满意ID作为默认主键时候,你可以gorm:"primaryKey"
自己指定
高级选项
字段级权限控制:这个感觉鸡肋,不说了
时间戳追踪:当创建更新时候,可以指定纳秒、毫秒、秒级追踪,
time.Time类型和int类型指定时候,看起来并没有多大区别
嵌入结构体
没啥好说,就一个:embeddedPrefix
来为 db 中的字段名添加前缀
type Author struct {
Name string
Email string
}
Author Author `gorm:"embedded;embeddedPrefix:author_"`
等效
AuthorName string
AuthorEmail string
字段标签
这个用的挺频繁的,就是gorm:"tag"
tag,有很多,这里简单提几个
column 指定列名
primaryKey
unique
default
更多的看gorm文档:https://gorm.io/zh_CN/docs/models.html#%E9%AB%98%E7%BA%A7%E9%80%89%E9%A1%B9
连接到数据库
GORM 官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server
MySQL
dsn := "用户名(一般写root):数据库密码@tcp(127.0.0.1:3306)/数据库名?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
parseTime用来处理time.Time
还有gorm连接时候的高级配置,文档写的很全,就不写了
还有PostgreSQL, SQlite, SQL Server的连接,因为很少用到就不赘述了,看了MySQL之后就都差不多
很特别的一点:如果其他数据库兼容mysql等它支持的方言,那么可以直接使用