Gorm | 青训营

79 阅读2分钟

Gorm框架学习

GORM

Gorm概述 "GORM" 是一个用于 Go 编程语言的对象关系映射(Object-Relational Mapping,ORM)库,用于简化数据库操作和数据模型的管理。它的全名是 "Go Object Relational Mapping",它提供了一种方便的方式来在 Go 代码中定义数据模型和数据库表之间的映射关系,从而使开发人员能够使用面向对象的方式进行数据库操作,而不必直接编写 SQL 查询语句。

G:G语言

O:对象

R:关系

M:映射

ORM优缺点

优点:

1、提高开发效率

缺点:

1、牺牲执行性能

2、牺牲灵活性

3、弱化SQL能力

GORM的使用

安装GORM

go get -u github.com/jinzhu/gorm

连接数据库

连接不同的数据库需要导入不同的驱动程序

连接mysql

package main
​
import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)
​
func main() {
    db, _ := gorm.Open("mysql", "user:password@(localhost:3306)/dbname?charset=utf8mb4&parseTime=True")
    defer db.Close()
}
​

接下来我们创建一个数据库

create database gormtest;

接下来用gorm创建数据库

package main
​
import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)
​
type UserInfo struct {
    ID     uint
    Name   string
    Gender string
}
​
func main() {
    db, err := gorm.Open("mysql", "root:123456@(localhost:3306)/gormtest?charset=utf8mb4&parseTime=True")
    if err != nil { // 数据库连接失败
        panic(err)
    }
    defer db.Close()           // 延迟关闭
    db.AutoMigrate(UserInfo{}) // 创建表
}
​

此时我们查看mysql

image-20230813153922632.png

创建记录

p1 := UserInfo{
        ID:     1,
        Name:   "zhangsan",
        Gender: "男",
    }
    db.Create(&p1)

这里我们注意,Create接受的是一个指针

image-20230813154154486.png

......

GORM操作数据库还是挺简单的,我觉得应该关注这几个点

就是,不管是First查询表的第一个数据还是Where查询等等,只要是查询操作,他们的返回值是是什么?查询过程出错怎么判断,没查询到数据怎么判断?

首先我们看First查询

image-20230813155336753.png

image-20230813155336753.png 注意,此时我们数据库是没有数据的,First的返回值是一个结构体DB,Error不为空,Error的值是没有找到数据,所以我们应该像图中代码这样处理错误,那我们看看其他查询方式是不是也类似。

image-20230813155624542.png

image-20230813155643981.png 我们进入到源码当中发现Find,First的返回值一样,那么他们的返回值处理应该是一样的就在这不过多赘述。

我们现在聊聊Where条件查询的返回值

Where 方法的返回值通常是一个查询链式操作的对象,允许你在构建查询时进行链式操作,最终使用查询方法来获取实际的查询结果。如下

image-20230813160711750.png

此时,随着我们业务的开发,一个数据库中会出现多张表,我们应该怎恶魔指定在特定的表的查询?

image-20230813162800715.png

我们直接用相应的指针类型接收即可。 今天的分享就到这。