1.Gorm概述
Gorm是一个神奇的,对开发人员友好的Golang ORM库(类比Java中的Mybatis)。 什么是ORM库?ORM(Object-Relational Mapping)框架是一种将对象模型表示映射到关系型数据库的技术。ORM框架可以帮助开发人员将数据从数据库中提取出来,封装成对象,并且将对象的属性与关系数据库中的表和列进行映射。这样开发人员就可以使用面向对象的方式操作数据库,而无需关心底层数据库的细节。ORM框架通常包含对象模型和关系模型之间的映射代码,这个映射可以使用注解、XML配置文件、DSL等方式进行定义。ORM框架还提供了一些其他的功能,例如缓存、事务管理和查询优化等,这些功能都可以提高应用程序的性能和开发效率。常见的Go语言ORM框架有GORM、XORM、beego ORM等。
2.Gorm的特性
- 全特性ORM
- 模型关联(一对一、一对多、一对多(反向)、多对多、多态关联)
- 钩子(Before/After、Create/Save/Update/Delete/Find)
- 预加载
- 事务
- 复合主键
- SQL构造器
- 自动迁移
- 日志
- 基于Gorm回调编写可拓展插件
- 全特性测试覆盖
- 开发者友好
3.安装Gorm
go intsall -u gitub.com/jinzhu/gorm
4.模型定义
模型一般都是普通的Golang结构体,Go的基本数据类型,或者是指针、sql.Scanner和driver.Valuer,同时也支持接口。如下所示:
typer User struct {
gorm.Model
Name string
Age sql.NullInt64
Birthday *time.Time
Email string `gorm:"type:varchar(100):unqiue_index"`
Role string `gorm:"size:255"` // 设置字段大小为255字节
MemberNumer *string `gorm:unique;not null` // 设置MemberNumber字段唯一且不为空
Num int `gorm:"AUTO_INCREMENT"` // 设置Num字段自增
Address string `gorm:"index:addr"` // 给Address创建一个名字是addr的索引
IgnoreMe int `gorm:"-"` // 忽略这个字段
}