Gorm保姆级教学

系列文章目录

在这里插入图片描述



前言

一、Gorm是什么?

GORM(Go Object Relational Mapping)是一个用于Go编程语言的对象关系映射(ORM)库。它的主要目的是简化在Go应用程序中与数据库的交互,尤其是关系型数据库,如MySQL、PostgreSQL、SQLite等。

GORM 解决了以下一些主要问题:

  1. 数据库操作抽象化:GORM 允许开发者使用 Go 结构体来表示数据库表,而无需编写复杂的SQL查询语句。这种抽象化使得数据库操作更易于理解和维护。

  2. CRUD 操作:GORM 提供了方便的方法来执行常见的数据库操作,如创建(Create)、读取(Read)、更新(Update)和删除(Delete)记录,减少了开发人员的工作量。

  3. 数据关联:GORM 支持定义和管理数据表之间的关联关系,如一对一、一对多和多对多关系。这使得处理复杂的数据模型变得更加容易。

  4. 数据验证:GORM 允许开发者在将数据保存到数据库之前执行验证,以确保数据的一致性和完整性。

  5. 钩子和回调:GORM 允许开发者定义在数据操作前后执行的钩子和回调函数,以实现自定义的业务逻辑。

总之,GORM 简化了在Go应用程序中与数据库交互的过程,提供了高级抽象和便捷的方法,使开发者能够更轻松地管理数据库操作和数据模型。这有助于提高开发效率并降低错误发生的风险。
ORM,全称为对象关系映射(Object-Relational Mapping),是一种软件设计模式和工具,用于在面向对象编程语言和关系型数据库之间建立映射关系,从而允许开发者使用面向对象的方式来操作数据库。

以下是ORM的一些重要概念和介绍:

  1. 对象关系映射:ORM的核心概念是将数据库中的表格和行数据映射到编程语言中的对象和类。每个数据库表对应一个对象类,表中的行对应类的实例。这样,开发者可以使用面向对象的方式来处理数据库操作,而不必直接编写SQL语句。

  2. 数据模型:ORM允许开发者使用编程语言中的类和属性来定义数据模型,而不必关心数据库的具体结构。这些类通常称为实体类(Entity Class)或模型类(Model Class)。

  3. CRUD操作:ORM提供了常见的CRUD操作(创建、读取、更新、删除)的抽象方法,使开发者能够方便地执行这些操作,而不必编写SQL查询语句。

  4. 关联关系:ORM工具通常支持在数据模型中定义表之间的关联关系,如一对一、一对多、多对多关系。这使得在程序中处理复杂的数据关系变得更加容易。

  5. 查询语言:大多数ORM库提供了自己的查询语言或查询构建器,使开发者能够以编程方式构建复杂的查询,而无需编写原始的SQL。

  6. 性能优化:一些ORM库提供了性能优化功能,例如查询缓存、延迟加载(Lazy Loading)等,以提高数据库访问的效率。

  7. 跨数据库支持:ORM库通常具有跨多种数据库系统的支持,因此可以轻松切换数据库而无需更改应用程序代码。

  8. 自动迁移:一些ORM库支持自动数据库迁移,即根据模型类的更改自动更新数据库结构,从而简化了数据库版本管理。

一些流行的编程语言,如Java、Python、Ruby和Go,都有各自的ORM库,用于简化与数据库的交互。一般来说,ORM可以加速开发过程,减少了手动编写SQL的工作量,并提供了更高的抽象级别,但也需要开发者理解底层数据库的基本概念以及ORM本身的工作方式,以确保有效地使用它。

二、使用步骤

1.引入库

GORM 是一个流行的 Go 语言 ORM(对象关系映射)库,用于简化 Go 应用程序与数据库的交互。以下是一些基本的步骤和示例,展示如何在 Go 项目中使用 GORM:

  1. 安装 GORM
    在项目中使用 GORM 需要首先安装它。你可以使用 Go 的包管理工具(如go get)来安装 GORM 和数据库驱动程序。例如,如果你要使用 MySQL 数据库,可以运行以下命令安装 GORM 和 MySQL 驱动:

    go get -u gorm.io/gorm
    go get -u gorm.io/driver/mysql
    
  2. 建立数据库连接
    在你的 Go 代码中,首先需要建立与数据库的连接。通常,你需要提供数据库的连接字符串、用户名和密码等信息。以下是一个连接到 MySQL 数据库的示例:

    import (
        "gorm.io/gorm"
        "gorm.io/driver/mysql"
    )
    
    // 连接到 MySQL 数据库
    dsn := "user:password@tcp(localhost:3306)/database_name"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        panic("无法连接到数据库")
    }
    
  3. 定义模型
    使用 GORM,你需要定义数据模型,这些模型将映射到数据库中的表格。模型通常是 Go 结构体。以下是一个示例模型定义:

    type User struct {
        ID   uint
        Name string
        Age  int
    }
    
  4. 创建、读取、更新和删除数据
    GORM 提供了简便的方法来执行数据库操作。以下是一些示例操作:

    • 创建记录

      user := User{Name: "John", Age: 30}
      db.Create(&user)
      
    • 读取记录

      var foundUser User
      db.First(&foundUser, 1) // 通过ID查找第一条记录
      
    • 更新记录

      db.Model(&foundUser).Update("Age", 31)
      
    • 删除记录

      db.Delete(&foundUser)
      
  5. 查询数据
    GORM 提供了强大的查询功能。以下是一个示例查询:

    var users []User
    db.Where("age > ?", 25).Find(&users)
    
  6. 关闭数据库连接
    在程序结束时,不要忘记关闭数据库连接:

    db.Close()
    

这只是一个简单的入门示例,GORM 提供了更多功能和选项,以满足更复杂的数据库交互需求。你可以查阅 GORM 的文档以了解更多详细信息和示例:https://gorm.io/

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。
GORM(Go Object Relational Mapping)是一个流行的 Go 语言 ORM(对象关系映射)库,用于简化 Go 应用程序与数据库的交互。它提供了丰富的功能,包括模型定义、查询构建、事务支持、数据库迁移等。下面是 GORM 的一些常见用法示例:

连接到数据库

首先,你需要导入 GORM 包并建立与数据库的连接。这个连接通常在应用程序的初始化部分完成。以下是一个连接到 MySQL 数据库的示例:

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

dsn := "user:password@tcp(localhost:3306)/database_name"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic("无法连接到数据库")
}
defer db.Close()

定义模型

使用 GORM,你可以定义数据模型,这些模型将映射到数据库中的表格。模型通常是 Go 结构体。以下是一个示例模型定义:

type User struct {
    gorm.Model // 包含了ID、CreatedAt、UpdatedAt、DeletedAt字段
    Name       string
    Age        int
    Email      string
}

创建记录

使用 GORM,你可以方便地创建新记录并将其插入到数据库中:

user := User{Name: "John", Age: 30, Email: "john@example.com"}
db.Create(&user)

读取记录

可以使用 GORM 进行各种查询操作。以下是一些示例:

  • 通过主键查找记录:

    var foundUser User
    db.First(&foundUser, 1) // 查找ID为1的用户
    
  • 查询多个记录:

    var users []User
    db.Find(&users)
    
  • 条件查询:

    var youngUsers []User
    db.Where("age < ?", 30).Find(&youngUsers)
    

更新记录

GORM 提供了更新记录的方法:

db.Model(&user).Update("Age", 31)

删除记录

也可以删除记录:

db.Delete(&user)

事务

GORM 支持事务操作,可以确保一系列操作要么全部成功,要么全部失败:

tx := db.Begin()
if tx.Error != nil {
    panic("无法开始事务")
}

// 执行一系列操作
tx.Create(&user1)
tx.Create(&user2)

// 提交事务
tx.Commit()

数据库迁移

GORM 支持数据库迁移,使你可以在不删除现有数据的情况下更新数据库结构。你需要为每个模型编写迁移文件,然后运行迁移以应用更改:

// 创建迁移文件
db.AutoMigrate(&User{})

这是 GORM 的一些常见用法示例。它还提供了更多高级功能,如关联关系管理、预加载、原生SQL执行等,以满足不同项目的需求。你可以查看 GORM 的官方文档以获取更详细的信息:https://gorm.io/


3.声明模型

在 GORM 中声明模型是将 Go 结构体与数据库表格关联起来的关键步骤。以下是如何在 GORM 中声明模型的示例:

假设我们有一个名为 User 的模型,表示用户:

import (
    "gorm.io/gorm"
)

type User struct {
    gorm.Model // 这个字段会自动添加 ID、CreatedAt、UpdatedAt、DeletedAt 字段
    Username   string `gorm:"unique"` // 使用 `unique` 标签表示该字段在数据库中是唯一的
    FullName   string
    Age        int
}

上面的示例演示了如何声明一个名为 User 的模型。以下是一些关键概念:

  • 我们使用了 gorm.Model 字段,它会自动添加 ID、CreatedAt、UpdatedAt 和 DeletedAt 字段。这些字段用于跟踪记录的主键、创建时间、更新时间和软删除标记(如果启用了软删除)。

  • 每个模型字段都需要在结构体中定义,以便 GORM 知道如何将结构体字段映射到数据库表格的列。在示例中,我们定义了 UsernameFullNameAge 字段。

  • 使用 gorm:"unique" 标签,我们告诉 GORM 将 Username 字段定义为数据库中的唯一键。

请注意,你可以根据你的数据库表格结构和需求来定义模型字段。一旦声明了模型,你就可以使用 GORM 来执行创建、读取、更新和删除等数据库操作。如果需要执行数据库迁移以创建相应的表格,你可以使用 AutoMigrate 方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值