一起养成写作习惯!这是我参与「掘金日新计划 · 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",
})
数据库就新加一条数据了
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中主要起一个数据载体的作用,以及在查询中来确定要查的表名称。