GORM实战 | 青训营后端

43 阅读2分钟

GORM简介

  • GORM(Go Object-Relational Mapping)是一个适用于 Go 语言的开源 ORM 库,用于简化数据库操作。它提供了一组丰富的功能,帮助开发人员在 Go 代码中进行数据库访问、查询和操作,而无需编写繁琐的 SQL 语句。
  • GORM的主要特性
    • 模型定义:你可以通过定义 Go 结构体来映射数据库表,使得操作数据库记录更像操作 Go 对象一样。
    • 自动迁移:GORM 支持自动创建、更新和迁移数据库表,根据模型结构的变化自动生成相应的表结构。
    • CRUD 操作:GORM 提供了易于使用的方法来执行创建、读取、更新和删除(CRUD)操作。
    • 查询构建器:通过链式调用方法,你可以构建复杂的查询,包括条件、排序、分页等。
    • 预加载:GORM 支持预加载关联数据,减少了 N+1 查询问题的发生。
    • 事务支持:GORM 支持数据库事务,可以确保操作的原子性和一致性。
    • 钩子函数:你可以在模型上定义回调函数,以便在特定事件发生时执行自定义逻辑。
    • 数据验证:GORM 支持在创建和更新操作前进行数据验证,以确保数据的有效性。
    • 支持多种数据库:除了支持 SQLite,GORM 还支持 MySQL、PostgreSQL、SQL Server 等多种数据库。

GORM实战

  1. 引入包以及安装

    // 安装
    go get -u gorm.io/gorm
    go get -u gorm.io/driver/sqlite
    // 包引入
    import (
      "gorm.io/gorm"
      "gorm.io/driver/sqlite"
    )
    
  2. 数据结构定义以及连接数据库

    // 定义一个Members结构体
    type Members struct {
    	gorm.Model
    	StudentID	int	`gorm:"column:StudentID"`
    	Scores		int	`gorm:"column:Scores"`
    }
    // 连接数据库
    db, err := gorm.Open(sqlite.Open("Class666.db"), &gorm.Config{})
    if err != nil {
    	panic("Failed to connect database")
    }
    
  3. 迁移数据库

    // 根据模型定义自动生成数据库表
    db.AutoMigrate(&Members{})
    
  4. 创建记录

    // 创建一条记录
    db.Create(&Members{StudentID: 565, Scores: 777})
    // 批量插入数据
    members := []Members{{StudentID: 566, Scores:752}, {StudentID: 754, Scores:568}}
    db.Create(members)
    
  5. 查询记录

    // 查询第一条记录
    db.First(&member1, 1)
    // 查询指定记录
    db.Where("StudentID = ?", 777).Find(&member2)
    
  6. 更新记录

    // 更新记录
    db.Model(Members{}).Update("StudentID", "999")
    
  7. 删除记录

    // 删除记录
    db.Delete(&member, 1)
    

上述是一些简单GORM操作数据库的操作,GORM提供丰富强大的功能,可以深入[GORM文档]: gorm.io/zh_CN/docs/ 继续学习

学习感悟

学习 GORM 是提升 Go 语言开发技能和数据库操作能力的一种方式。通过掌握 GORM,可以更高效、更安全地进行数据库操作,并在实际项目中应用这些知识。可以根据GORM文档学习,效率会更高,为后续开发工作打下基础。