Gorm框架浅析 | 青训营

104 阅读2分钟

简介

如果用一句话概括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

terminal.png

//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)

)