GORM目前支持MySQL、SQLServer、PostgreSQL、SQLite。
创建数据
ORM表示了三个映射关系:
数据表<-->结构体
数据行<-->结构体实例
字段 <-->结构体字段
type UserInfo struct { //定义MySQL表中的结构、名称、大小及类型
ID uint
Name string
Gender string
Hobby string }
p := &Product{Code: "D42", ID: 1}
GORM查询数据
First使用时,需要注意查询不到数据会返回ErrRecordNotFound。 使用Find查询多条数据时,查询不到数据不会返回错误。
当使用结构体作为条件查询时,GORM只会查询非零字段。这意味着如果您的字段值为0、"、false或其他零值,该字段不会被使用于构建查询条件,使用Map来构建查询条件
GORM更新数据
使用Struct更新时,只会更新非零值,如果需要更新零值使用Map更新或者使用Select选择字段。
GORM删除数据
GORM提供了gorm.DeletedAt用于帮助用户实现软删
拥有软删除能力的Model调用Delete时,记录不会被从数据库中真正删除。但GORM会将DeletedAt置为当前时间,并且你不能再通过正常查询找到方法记录。
事务
对于写操作(创建、更新、删除),为了确保数据的完整性,GORM会将它们封装在事务内运行