全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  详情

Golang中的数据库操作使用ORM框架和原生SQL语句

来源:千锋教育
发布人:xqq
2023-12-23

推荐

在线提问>>

Golang中的数据库操作:使用ORM框架和原生SQL语句

在Golang开发中,访问数据库是一项非常重要的技能。无论是使用ORM框架还是原生SQL语句,都是开发人员经常需要面对的问题。在本文中,我们将介绍如何在Golang中使用ORM框架和原生SQL语句来进行数据库操作。

1. ORM框架

ORM框架是一种将对象与关系型数据库进行映射的技术。ORM框架提供了一种可编程的API来操作数据库,使开发人员更加专注于业务逻辑而不必关注底层的SQL操作。在Golang中,有许多优秀的ORM框架可供选择,比如GORM、XORM等。

我们以GORM为例,介绍如何使用ORM框架来进行数据库操作。

1.1 安装GORM

在Golang中,使用第三方包管理工具go mod来管理依赖。要使用GORM,需要在项目中引入gorm包。可以使用以下命令来安装:

go get -u gorm.io/gorm

1.2 连接数据库

在使用GORM之前,必须先打开数据库连接。在GORM中,可以使用Dial函数来连接数据库。例如:

`go

import (

"gorm.io/gorm"

)

func main() {

db, err := gorm.Open("mysql", "user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local")

if err != nil {

panic("连接数据库失败")

}

defer db.Close()

}

在以上代码中,我们使用mysql作为数据库,并提供了数据库连接字符串。此外,我们使用了defer语句来在函数结束时关闭数据库连接。1.3 定义模型在使用ORM框架时,需要先定义模型。在GORM中,一个模型对应数据库中的一张表。我们可以使用struct来定义一个模型。例如:`gotype User struct {    gorm.Model    Name     string    Age      int}

以上代码中,我们定义了一个名为User的模型。User模型中包含了gorm.Model结构体,该结构体提供了一些常用的字段,例如CreatedAt、UpdatedAt、DeletedAt等。此外,我们还定义了Name和Age字段。

1.4 创建表格

在定义了模型之后,我们需要创建对应的表格。在GORM中,可以使用AutoMigrate函数来自动创建表格。例如:

`go

db.AutoMigrate(&User{})

以上代码中,我们使用了AutoMigrate函数来创建User模型对应的表格。1.5 插入数据在创建了表格之后,我们就可以向表格中插入数据了。在GORM中,可以使用Create函数来插入数据。例如:`gouser := User{Name: "Tom", Age: 18}db.Create(&user)

以上代码中,我们创建了一个User实例,并使用Create函数将其插入到数据库中。

1.6 查询数据

在插入了数据之后,我们就可以从数据库中查询数据了。在GORM中,可以使用Find函数来查询数据。例如:

`go

var users User

db.Find(&users)

以上代码中,我们定义了一个User类型的切片,并使用Find函数从数据库中查询所有的数据。查询结果将被放入切片中。1.7 更新数据在查询了数据之后,我们可以对数据进行修改。在GORM中,可以使用Update函数来更新数据。例如:`godb.Model(&user).Update("age", 20)

以上代码中,我们使用Update函数将user实例的age字段更新为20。

1.8 删除数据

在不需要数据时,我们可以从数据库中删除它们。在GORM中,可以使用Delete函数来删除数据。例如:

`go

db.Delete(&user)

以上代码中,我们使用Delete函数将user实例从数据库中删除。2. 原生SQL语句虽然ORM框架在数据库操作中提供了很大的便利性,但有时候需要使用原生SQL语句来完成一些复杂的操作。在Golang中,可以使用database/sql标准库来执行原生SQL语句。2.1 连接数据库与ORM框架类似,使用原生SQL语句也需要先连接到数据库。在database/sql标准库中,可以使用Open函数来连接数据库。例如:`goimport (    "database/sql"    _ "github.com/go-sql-driver/mysql")func main() {    db, err := sql.Open("mysql", "user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local")    if err != nil {        panic("连接数据库失败")    }    defer db.Close()}

在以上代码中,我们使用Open函数来连接mysql数据库。

2.2 执行SQL语句

在连接到数据库之后,我们就可以执行SQL语句了。在database/sql标准库中,可以使用Query函数来执行查询语句,使用Exec函数来执行修改语句。例如:

`go

rows, err := db.Query("SELECT * FROM users")

if err != nil {

panic("查询失败")

}

defer rows.Close()

for rows.Next() {

var id int

var name string

var age int

err := rows.Scan(&id, &name, &age)

if err != nil {

panic("扫描失败")

}

fmt.Printf("id: %d, name: %s, age: %d\n", id, name, age)

}

以上代码中,我们使用Query函数来执行一个查询语句,并使用Scan函数来获取查询结果。在执行完SQL语句后,需要使用defer语句来关闭查询结果。2.3 使用事务在进行一些复杂的操作时,需要使用事务来保证数据的一致性。在Golang中,可以使用database/sql标准库来实现事务。例如:`gotx, err := db.Begin()if err != nil {    panic("开启事务失败")}sql := "UPDATE users SET age = ? WHERE id = ?"_, err = tx.Exec(sql, 20, 1)if err != nil {    tx.Rollback()    panic("更新失败")}sql = "DELETE FROM users WHERE id = ?"_, err = tx.Exec(sql, 2)if err != nil {    tx.Rollback()    panic("删除失败")}err = tx.Commit()if err != nil {    panic("提交失败")}

以上代码中,我们使用Begin函数开启一个事务,然后执行更新和删除操作。如果操作失败,则使用Rollback函数回滚事务。如果操作成功,则使用Commit函数提交事务。

总结

ORM框架和原生SQL语句都是在Golang中进行数据库操作的重要方式。ORM框架提供了一种可编程的API来操作数据库,使开发人员更加专注于业务逻辑而不必关注底层的SQL操作。原生SQL语句则提供了更多的灵活性和控制力。无论是ORM框架还是原生SQL语句,都是开发人员必须掌握的技能。

相关文章

使用Golang开发高性能的机器学习算法,提升预测准确率

golang实现微服务架构使用grpc和protobuf

深入理解Golang的Goroutine和Channel

Go语言网络编程如何开发高性能TCP/UDP通信应用程序

Golang编程实战使用beego框架构建一个实时性应用

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取