Golang:gorm的基本使用

4,241 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第26天,点击查看活动详情

第一部分:ORM(object relational mapping)

对象关系映射

orm将数据表抽象为一个类,每条数据就是一个实例。同时封装了便捷的方法,让我们可以更简单的操作数据库,即使是你对sql语法只是了解。

第二部分:GORM

“一个神奇的,对开发人员友好的 Golang ORM 库”

gorm是一个由国人开发的go语言的orm库。

第三部分:GORM下载和文档(learnku)

下载:

go get -u gorm.io/gorm

中文文档:

https://learnku.com/docs/gorm/v2

第四部分:GORM的使用

1. 定义结构体

第一步,进行orm操作前必须有个结构体,用于承载或表示一条数据。通过一条数据也可以看到所在表的表结构,现在新建一张表。结构如下:

type UserInfo struct {
	Id     int `gorm:"primaryKey"`
	Name   string
	Gender string
	Hobby  string
}

字段的tag可以指定数据的类型和索引。具体参考:文档l

2. 连接mysql,通过gorm新建表

dsn结构:"用户名:密码@(数据库连接:端口)/数据库名称?charset=字符集&parseTime=True&loc=Local"

代码如下:

dsn := "root:root123@(localhost:3306)/test_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic(err)
}
// 跑一下数据库迁移,如果不存在则新建表,存在判断字段是否一致不一致修改。
db.AutoMigrate(&ormdemo.UserInfo{})

新建的表命名是类名大驼峰转下划线,最后加上一个s,例如以上案例生成的是user_infos

3. 新增一条数据

db.Create方法可以新建一条数据,传入的是一个表结构体指针,返回值是一个gorm.DB,即我们的数据库连接。如下:

db.Create(&ormdemo.UserInfo{
    Name:   "jaylog",
    Gender: "man",
    Hobby:  "pingpong",
})

数据库就新加一条数据了

create.png

4. 查询一条数据

查询的方法挺多个,这里先使用一个官网的快速开始案例db.First(),参数是一个结构体指针,查询到的话会把数据保存到结构体中。

var u = &ormdemo.UserInfo{}
// 用来存放结果的结构体,第二个参数,id
db.First(u, 1)
fmt.Println(u.Name)
// go run .\main.go
//  jaylog

5. 修改一条数据

查询到一条数据,修改他的一个字段。需要先查询到才可以修改

var u = &ormdemo.UserInfo{}
db.First(u, 1).Update("hobby", "running")
fmt.Printf("姓名:%s,爱好:%s", u.Name, u.Hobby)
// 姓名:jaylog,爱好:running

还可以这样

var u = &ormdemo.UserInfo{}
db.First(u, 1)
db.Model(u).Uodate("hobby", "running")
fmt.Printf("姓名:%s,爱好:%s", u.Name, u.Hobby)
// 姓名:jaylog,爱好:running

6. 删除一条数据

使用db.Delete(&u,1)

db.Delete(&u, 1)
// 删除一条id为1的数据

总结:

主要写了什么是orm,gorm是什么,gorm基本的操作mysql。其中结构体在gorm中主要起一个数据载体的作用,以及在查询中来确定要查的表名称。