每日一库:GORM简介

每日,gorm,简介 · 浏览次数 : 62

小编点评

**GORM(Go Object-Relational Mapping)** GORM 是一个用于 Go 语言的 ORM 库,提供了一种简单易用的方式来操作数据库。 **主要特性:** * 全功能 ORM:支持所有数据库类型,包括 MySQL、 PostgreSQL、SQLite 和 SQL Server。 * 开箱即用:提供许多默认行为,使开发人员可以快速上手。 * 链式操作:支持链式操作,使代码更加简洁。 * 自动迁移:可以自动创建、更新和删除数据库表。 * 预加载:可以一次性查询关联数据,而无需多次查询。 * 事务:支持数据库事务,确保操作执行完整。 * 日志:提供了详细的日志,方便调试。 * 扩展性:提供许多接口,可扩展 GORM 功能。 **基本操作:** 1. **安装 GORM:**使用 `go get -u gorm.io/gorm` 命令安装 GORM。 2. **连接数据库:**使用 `gorm.Open()` 创建连接并设置数据库连接字符串。 3. **创建模型:**使用 `gorm.Model` 定义数据库表结构,并使用 `AutoMigrate()` 方法创建表。 4. **创建记录:**使用 `Create()` 方法创建新的记录。 5. **读取记录:**使用多种方法读取数据库中的记录。 6. **更新记录:**使用 `Save` 或 `Updates` 方法更新记录。 7. **删除记录:**使用 `Delete` 方法删除记录。 **许可:** 本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)许可,所有使用须注明出处。

正文

GORM(Go Object-Relational Mapping)是一个用于Go语言的ORM库,它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库,包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性:

  1. 全功能ORM:GORM支持全功能的ORM操作,包括关联、事务、迁移、批量插入、预加载、复合主键等。
  2. 开箱即用:GORM的设计目标是开箱即用,它提供了许多默认行为,使得开发者可以快速上手。
  3. 链式操作:GORM支持链式操作,这使得代码更加简洁和易读。
  4. 自动迁移:GORM可以自动迁移数据库,这意味着你可以通过代码来创建、更新和删除数据库表。
  5. Hooks:GORM支持在执行数据库操作前后执行自定义的Hook函数。
  6. 预加载:GORM支持预加载,这意味着你可以一次性查询出关联的数据,而不需要多次查询。
  7. 事务:GORM支持数据库事务,你可以很容易地开始、提交或回滚一个事务。
  8. 日志:GORM提供了详细的日志,你可以看到每一次的数据库操作。
  9. 扩展性:GORM提供了许多接口,你可以通过实现这些接口来扩展GORM的功能。
  10. 测试:GORM提供了方便的测试工具,你可以很容易地为你的代码编写测试。

以下是一些基本的GORM操作:

1. 安装GORM

在Go项目中,你可以使用以下命令来安装GORM:

$ go get -u gorm.io/gorm

2. 连接到数据库

GORM支持多种类型的数据库,例如MySQL,SQLite,PostgreSQL等。以下是一个连接到MySQL数据库的示例:

package main

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

func main() {
    dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

3. 定义模型

在GORM中,你可以通过定义Go结构体来创建数据库表。例如:

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

然后,你可以使用AutoMigrate函数来自动创建表:

db.AutoMigrate(&Product{})

4. 创建记录

使用Create函数可以在数据库中创建新的记录:

db.Create(&Product{Code: "D42", Price: 100})

5. 读取记录

GORM提供了多种方法来查询数据库中的记录。例如:

// 获取第一条记录,按主键排序
var product Product
db.First(&product, 1) // 查询id为1的product

// 获取最后一条记录
db.Last(&product)

// 获取所有记录
var products []Product
db.Find(&products)

// 使用条件查询
db.Where("price = ?", 100).First(&product)

6. 更新记录

你可以使用SaveUpdates函数来更新数据库中的记录:

// 更新product的price
db.Model(&product).Update("Price", 200)

// 更新多个字段
db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 非零字段
db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

7. 删除记录

使用Delete函数可以删除数据库中的记录:

db.Delete(&product, 1)

以上是GORM的基本使用方法,更多详细的信息和高级用法,可以参考GORM的官方文档:http://gorm.io/docs/index.html。


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
author: mengbin
blog: mengbin
github: mengbin92
cnblogs: 恋水无意


与每日一库:GORM简介相似的内容:

每日一库:GORM简介

GORM(Go Object-Relational Mapping)是一个用于Go语言的ORM库,它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库,包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性: 1. **全功能ORM**:G

每日一库:使用Viper处理Go应用程序的配置

在开发Go应用程序时,处理配置是一个常见的需求。配置可能来自于配置文件、环境变量、命令行参数等等。Viper是一个强大的库,可以帮助我们处理这些配置。 什么是Viper? Viper是一个应用程序配置解决方案,用于Go应用程序。它支持JSON、TOML、YAML、HCL、envfile和Java p

每日一库:cobra 简介

当你需要为你的 Go 项目创建一个强大的命令行工具时,你可能会遇到许多挑战,比如如何定义命令、标志和参数,如何生成详细的帮助文档,如何支持子命令等等。为了解决这些问题,github.com/spf13/cobra 就可以派上用场。 github.com/spf13/cobra 是一个用于构建强大的命

每日一库:Memcache

`Memcache` 是一个高性能、分布式的内存缓存系统,常用于缓存数据库查询结果、API调用结果、页面内容等,以提升应用程序的性能和响应速度。下面详细介绍一些 `Memcache` 的特点和使用方式: 1. **内存缓存:** `Memcache` 是一种基于内存的缓存系统,数据存储在内存中,因此

每日一库:gosec

`gosec` 是一个用于在 Go 代码中查找安全问题的开源工具,它可以帮助发现可能的漏洞和潜在的安全风险。以下是关于 `gosec` 的详细介绍: ## 1. 工具概述: `gosec` 是一个静态分析工具,用于扫描 Go 代码以查找潜在的安全问题。它可以识别常见的代码漏洞、敏感信息泄露和其他安全

每日一库:fsnotify简介

`fsnotify`是一个用Go编写的文件系统通知库。它提供了一种观察文件系统变化的机制,例如文件的创建、修改、删除、重命名和权限修改。它使用特定平台的事件通知API,例如Linux上的inotify,macOS上的FSEvents,以及Windows上的ReadDirectoryChangesW。

每日一库:pprof简介

## pprof简介 `pprof`是Go语言的一个性能分析库,它可以帮助开发者找出程序中的性能瓶颈。`pprof`提供了CPU分析、内存分析、阻塞分析等多种性能分析功能。 以下是`pprof`的主要特性: 1. **CPU分析**:`pprof`可以记录程序在CPU上的运行时间,并将这些数据以火焰

每日一库:lumberjack -- 日志轮换和管理

在开发应用程序时,记录日志是一项关键的任务,以便在应用程序运行时追踪问题、监视性能和保留审计记录。Go 语言提供了灵活且强大的日志记录功能,可以通过多种方式配置和使用。其中一个常用的日志记录库是 github.com/natefinch/lumberjack,它提供了一个方便的方式来处理日志文件的轮

每日一库:Prometheus

什么是 Prometheus Prometheus 是一个开源的系统监控和警报工具,最初由 SoundCloud 开发,并于 2012 年发布为开源项目。它是一个非常强大和灵活的工具,用于监控应用程序和系统的性能,并根据预定义的规则触发警报。以下是对 Prometheus 的详细介绍: 特点和优势:

找出长时序遥感影像的缺失日期并用像素均为0的栅格填充缺失日期的文件

本文介绍基于C++语言的GDAL库,基于一个存储大量遥感影像的文件夹,依据每一景遥感影像的文件名中表示日期的那个字段,找出这些遥感影像中缺失的成像日期,并新生成多个像元值全部为0的栅格文件,作为这些缺失日期当日的遥感影像文件的方法~