首页 > 其他分享 >golang中的ORM框架

golang中的ORM框架

时间:2024-04-28 23:35:37浏览次数:30  
标签:框架 数据库 db gorm golang ORM user GORM

目录


ORM框架

在Golang中,ORM(Object-Relational Mapping,对象关系映射)框架是一种用于将面向对象的概念与关系型数据库中的表进行映射的工具。通过使用ORM框架,开发者可以更方便地执行数据库操作,如创建、读取、更新和删除数据,而无需编写大量的SQL语句。

在Golang中,有多个优秀的ORM框架可供选择,其中GORM是最受欢迎的之一。GORM提供了丰富的功能和易于使用的API,支持多种主流数据库,包括MySQL、PostgreSQL、SQLite等,这使得开发者可以轻松切换数据库而无需更改大量代码。此外,GORM还提供了数据表映射、查询构建器、事务支持以及钩子函数等特性,帮助开发者更加高效地进行数据库操作。

使用GORM等ORM框架的优势在于:

  • 数据模型都在一个地方定义,更容易更新和维护,也利于重用代码。
  • ORM提供了现成的工具,很多功能如数据消毒、预处理、事务等都可以自动完成。
  • 基于ORM的业务代码相对简单,代码量少,语义性好,容易理解。

GORM基本用法

GORM是一个在Golang中广泛使用的ORM(对象关系映射)框架,它允许开发者使用Go的结构体来表示数据库中的表,并通过Go的方法来实现对数据库的增删改查操作。以下是关于如何使用GORM的详细介绍:

1. 安装GORM

首先,你需要在你的Go项目中安装GORM。你可以使用go get命令来安装:

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

这将安装GORM的核心库以及MySQL的驱动。

2. 连接数据库

在使用GORM之前,你需要先建立与数据库的连接。以下是一个连接到MySQL数据库的例子:

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

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{})
    if err != nil {
        panic("Failed to connect to database")
    }
    // 现在你可以使用db变量进行数据库操作了
}

在这个例子中,dsn字符串包含了连接到MySQL数据库所需的所有信息,包括用户名、密码、数据库地址、端口和数据库名。gorm.Open函数用于建立连接,并返回一个*gorm.DB类型的对象,你可以使用这个对象进行后续的数据库操作。

3. 定义模型

在GORM中,模型通常是由Go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成的结构体。每个结构体字段都对应数据库表中的一列。例如:

type User struct {
    gorm.Model  // 包含了ID, CreatedAt, UpdatedAt, DeletedAt四个字段
    Name        string
    Age         int
    Email       string  `gorm:"type:varchar(100);unique"` // 设置字段类型为varchar(100)且唯一
}

在上面的例子中,User结构体定义了一个用户模型,它包含了用户的姓名、年龄和电子邮件地址。gorm.Model嵌入结构体为模型提供了基本的CRUD功能。

4. 执行CRUD操作

GORM提供了丰富的API来执行CRUD(创建、读取、更新、删除)操作。以下是一些基本示例:

创建记录

user := User{Name: "John", Age: 30, Email: "[email protected]"}
result := db.Create(&user)
// 检查是否有错误发生
if result.Error != nil {
    // 处理错误
}

读取记录

var user User
db.First(&user, 1) // 根据整数主键查找
// 或者
db.Where("name = ?", "John").First(&user) // 根据条件查找

更新记录

db.Model(&user).Update("Age", 31) // 更新user的Age字段

删除记录

db.Delete(&user, 1) // 根据主键删除

5. 迁移和查询

GORM也提供了自动迁移功能,可以根据定义的模型自动生成相应的数据库表。

// 自动迁移schema
db.AutoMigrate(&User{})

对于复杂的查询,GORM提供了链式API来构建查询。例如:

var users []User
db.Where("age > ?", 20).Order("name").Find(&users) // 查询年龄大于20的用户,并按名称排序

以上只是GORM的一些基本用法。在实际项目中,你可能还需要使用到GORM的高级特性,如事务、钩子、关联等。建议查阅GORM的官方文档以获取更详细的信息和示例。

标签:框架,数据库,db,gorm,golang,ORM,user,GORM
From: https://www.cnblogs.com/yubo-guan/p/18164748

相关文章

  • 自动化测试框架-数据读取
     1.准备数据:数据格式为{json},放在json文件内,例如这样:   2.工具类:读取.json文件,保存在Map<testCaseName,JSONObject>内publicstaticMap<String,JSONObject>jsonToSearchFilter(StringfileName)throwsIOException{Map<String,JSONObject>result=ne......
  • mORMot 1.18 第07章 简单的读写操作
    mORMot1.18第七章简单的读写操作本章描述了典型的数据读写操作。首先,我们将注意力集中在数据上,而不是函数。读取操作返回一个TID,它是一个32位或64位整数(取决于你的内存模型),反映了表的信息。TID在表中的每一行都是唯一的。ORM的新手可能会感到惊讶,但通常你不需要创建SQL查询......
  • Golang基于etcd实现服务注册和发现功能
    简单做个笔记registerpackagemainimport( "os" "log" "time" "syscall" "context" "os/signal" "go.etcd.io/etcd/clientv3")//ServiceRegister创建租约注册服务typeServiceRegisterstruct......
  • 前端框架
    后台管理系统是我们许多信息化项目必不可少的子系统。使用Vue作为后台管理系统或者业务系统的前端框架,开发起来非常便利,因为Vue是前端三大主流框架之一,也是目前最火的一个前端框架,拥有强大的社区支持。Vue作为一套构建用户界面的框架,关注视图层,它不仅易于上手,还便于与第三方库或既......
  • 微服务调用form-data 流文件异常
    Noserializerfoundforclassjava.io.FileDescriptorandnopropertiesdiscoveredtocreateBeanSerializer(toavoidexception,disableSerializationFeature.FAIL_ON_EMPTY_BEANS)(throughreferencechain:com.cloud.module.smartkey.dto.UploadParam["upl......
  • 开源相机管理库Aravis学习——PixelFormat编码规则
    目录前言前置知识PixelFormatBpp编码规则源码分析分类标准补充ARV_PIXEL_FORMAT_BIT_PER_PIXEL参考文章前言在学习Aravis官方例程的时候,有这么一个函数:arv_camera_get_pixel_format,它的返回类型是ArvPixelFormat(本质是个32位无符号整数)。这意味着对于每个图像数据格式,都有自己......
  • Util 应用框架 UI 全新升级
    UtilUI已经开发多年,并在多家公司的项目使用.不过一直以来,UtilUI存在一些缺陷,始终未能解决.最近几个月,Util团队下定决心,终于彻底解决了所有已知缺陷.Util应用框架UI介绍Util应用框架UI建立在Angular,Ng-Zorro,Ng-Alain基础之上,用于开发企业中后台.......
  • js 接收form表单响应
    可直接运行的示例:<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>test</title></head><formid="myForm"><labelfor=&quo......
  • 信息安全管理系统(Information Security Management System,ISMS)
    一、中英文名称中文名称:信息安全管理系统英文名称:InformationSecurityManagementSystem,简称ISMS二、定义信息安全管理系统(ISMS)是一种对信息系统中的数据和信息进行采集、传输、存储、处理和应用的全方位保护和管理的信息系统。它采用一种集中的、系统化的方法,来管理组织的信......
  • 电子商务平台(E-Business Platform)
    电子商务平台信息如下:一、中英文名称中文名称:电子商务平台英文名称:E-BusinessPlatform或E-CommercePlatform二、定义电子商务平台是为企业或个人提供网上交易洽谈的平台。它是建立在Internet网上进行商务活动的虚拟网络空间和保障商务顺利运营的管理环境,协调、整合信息流......