GORM学习笔记

83 阅读3分钟

关于GORM

GORM是一个用于Go语言的ORM(对象关系映射)库,它可以帮助开发者简化数据库操作。本文将介绍如何入门使用GORM,并提供一些基本的示例代码。

1:安装GORM

要开始使用GORM,首先需要安装它。你可以使用go get命令来安装GORM。在终端中运行以下命令:

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

这将自动下载并安装最新版本的GORM。

2:导入GORM包

安装完成后,在你的Go代码中使用import语句导入GORM包:

import "gorm.io/gorm"

这样就可以在代码中使用GORM提供的功能了。

ps:这里如果你用的是goland这款软件,你只需要将鼠标移动到爆红的地方,然后按住alt+enter键,这样就会自动导入了

3:连接数据库

在使用GORM之前,需要先连接到数据库。我这里选择的是mysql数据库。我们就需要使用GORM提供的gorm.Open函数来连接数据库。我们则需要提供数据库的连接信息,例如数据库类型、主机名、端口号、用户名、密码等。下面就是连接的代码:

dsn := "user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    // 处理连接错误
}

例如我的就是

dsn := "root:1234@tcp(127.0.0.1:3306)/golang_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic("failed to connect database")
}
​

这里我的用户名是root,密码就是1234,端口是3306,数据库的名字叫golang_db

4:定义数据模型

在使用GORM进行数据库操作之前,需要定义模型结构。使用GORM的结构体标签来定义模型结构。你可以在结构体字段上添加标签来指定字段名、数据类型、约束等信息。以下是一个定义用户模型的示例:

type Product struct {
    gorm.Model
    Code  string
    Price uint
}

在上面的代码中,我们定义了一个Product结构体,其中Product结构体包含了gorm.Model,它会自动添加一些常用的字段,如IDCreatedAt(创建时间)、UpdatedAt(更新时间)和DeletedAt(是否删除)。

5:执行数据库操作

定义好数据模型后,我们接下来就可以使用GORM提供的API来执行数据库操作了。以下是curd:

插入数据

func insert(db *gorm.DB) {
    //插入数据
    p := Product{
        Code:  "1001",
        Price: 100,
    }
    db.Create(&p)
}

更新

func update(db *gorm.DB) {
    var p Product
    db.First(&p, 1)
    db.Model(&p).Update("Price", 1000)
    //  db.Model(&p).Update(Product{Price: 1001, Code: "1002"}) //仅更新非零字段
​
}

查询

func find(db *gorm.DB) {
    var p Product
    db.First(&p, 1)
    fmt.Printf("p: %v\n", p)
    //db.First(&p, "code=?", "1001") //查找code字段为1001的记录
    //fmt.Printf("p: %v\n", p)
​
}

删除

func delete(db *gorm.DB) {
	//添加删除标记,不会真的删除
	var p Product
	db.First(&p, 1)
	db.Delete(&p, 1)
}

其中,db是一个GORM的数据库连接对象。Create函数用于插入一条记录,First函数用于查询第一条记录,Model函数用于更新记录,Delete函数用于删除记录。

这里我们一般把创建放到init函数里面

// 系统会自动帮忙调用
func init() {
	dsn := "root:runaway0926@tcp(127.0.0.1:3306)/golang_db?charset=utf8mb4&parseTime=True&loc=Local"
	d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}
	db = d
}

以上为我学习的笔记,如有不足请见谅!!!