Gorm学习|青训营笔记

172 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第4天

Gorm是什么

Gorm在掘金官方给的解释中是一款用Golang开发的ORM框架,ORM则是对象关系映射的意思。那么因为orm有一些好处,比如说可以让新手避免慢sql。目前Gorm已经是Golang web中最流行的orm框架之一了。 安装很简单,用go get指令即可。

Gorm链接数据库

Gorm支持多种数据库的除了官方支持的,还可以通过自定义介入其他数据库。以mysql为例,链接非常简单。 只需要import来过包即可

import (
    "gorm.io/driver/mysql" // gorm mysql 驱动
	"gorm.io/gorm"// gorm
)

还有连接代码,这里copy一下掘金给的代码好了。

// MySQL 配置信息
username := "root"              // 账号
password := "xxxxxx" // 密码
host := "127.0.0.1"             // 地址
port := 3306                    // 端口
DBname := "gorm1"               // 数据库名称
timeout := "10s"                // 连接超时,10秒
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local&timeout=%s", username, password, host, port, DBname, timeout)
// Open 连接
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic("failed to connect mysql.")
}

这里就是一个很简单的连接。

自动迁移

这个功能是一个很好用的功能,就是说Gorm可以自动建表,不过好像之前也遇到过有类似功能的orm。 也就是说在数据库表未初始化的时候就根据结构体自动建。还是挺好用的。

利用db.AutoMigrate方法即可自动建表。

db.AutoMigrate(&User{}, &Product{}, &Order{})

db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})

增删改查

这个就比较常规了, 增就create,查就db。first 改就直接改然后save,删就delete即可

	// 增
	db.Create(&User{
		Name: "6⃣️",
		Age:  66,
		Addr: "京海",
	})

	// 查
	var user User
	db.First(&user)
	fmt.Println(user)

	// 改
	user.Name = "老六"
	db.Save(&user)
	fmt.Println(user) 

	// 删
	db.Delete(&user)
}

如上图就是简单的使用方式。当然,代码没贴全,完整的肯定是有一些其他的比如说package,import,生成结构体等等。 主要用到的包是package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" )

标签

这个标签就没什么写的了,主要是用的时候能查到就行,或者说用的多就会背了 具体可以在别人的教程里面看到,比如说colum这个列名,type,size,等等。有的时候比如说声明model时,tag是可选的。