简介
如果用一句话概括GORM,那么 GORM is the fantastic ORM library for Golang which aims to be developer friendly 便是对于GORM最简介的概括。
首先,我在这里放出官方的gorm文档,便于同学们学习。
GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
我主要讲一下gorm的连接和模型定义。
参考学习资料:关于docs文档 (fengfengzhidao.com)
1.连接数据库
go get gorm.io/driver/mysql
go get gorm.io/gorm
//goland 里面下载在左下角terminal的命令窗口输入以上两行代码下载mysql驱动
db, err := gorm.Open(mysql.New(mysql.Config{
DriverName: "my_mysql_driver",
DSN: "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True&loc=Local",
// data source name, 详情参考:github.com/go-sql-driv… }), &gorm.Config{})
连接MySQL数据库
2.模型定义
模型是标准的struct,通过go语言的基本数据类型,实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成
定义一张表格
type Student struct{
ID uint
name string
Email * string
}
auto表格结构生成
DB.AutoMigrate(&Teacher{})
[修改大小]
我们可以使用gorm的标签进行修改
有两种方式
Name string 'gorm:"type:varchar(12)"'
Name string 'gorm:"size:2"'
[字段标签]
type 定义字段类型
size 定义字段大小
column 自定义列名
primaryKey 将列定义为主键
unique 将列定义为唯一键
default 定义列的默认值
not null 不可为空
embedded 嵌套字段
embeddedPrefix 嵌套字段前缀
comment 注释
多个标签之前用 ; 连接
type StudentInfo struct {
Email *string gorm:"size:32" // 使用指针是为了存空值
Addr string gorm:"column:y_addr;size:16"
Gender bool gorm:"default:true"
}
type Student struct {
Name string gorm:"type:varchar(12);not null;comment:用户名"
UUID string gorm:"primaryKey;unique;comment:主键"
Info StudentInfo gorm:"embedded;embeddedPrefix:s_"
}
// 建表语句
CREATE TABLE students (
name varchar(12) NOT NULL COMMENT '用户名',
uuid varchar(191) UNIQUE COMMENT '主键',
s_email varchar(32),
s_y_addr varchar(16),
s_gender boolean DEFAULT true,
PRIMARY KEY (uuid)
)