全国旗舰校区

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

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

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

Golang项目实践使用GormORM框架操作MySQL

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

推荐

在线提问>>

Golang项目实践:使用Gorm ORM框架操作MySQL

在Go语言中,ORM框架是十分重要的一个组件。ORM框架帮助我们抽象出了数据库的一些基础操作,让我们不必关心数据库实现的细节,从而使我们的应用程序更加稳健并提高了开发效率。

而Gorm是一个十分优秀的Go语言ORM框架,它不仅支持MySQL,还支持SQLite3、PostgreSQL、SQL Server等多种关系型数据库。在本文中,我们将演示如何使用Gorm ORM框架操作MySQL。

# 安装Gorm

使用Gorm ORM框架之前,我们需要先安装Gorm。安装Gorm十分简单,只需要执行以下命令即可:

go get -u github.com/jinzhu/gorm

# 安装MySQL数据库

在使用Gorm操作MySQL之前,我们需要先安装MySQL数据库。在安装MySQL之前,需要先安装MySQL的依赖包,执行以下命令即可:

sudo apt-get updatesudo apt-get install mysql-server mysql-client

安装完成之后,我们需要创建一个用于测试的数据库。在MySQL中,我们可以使用以下命令创建一个名为test的数据库:

CREATE DATABASE test;

# 创建Gorm连接

在使用Gorm前,我们需要先创建一个连接。在Gorm中,我们使用以下代码创建一个MySQL连接:

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")func main() {db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")if err != nil {panic("failed to connect database")}defer db.Close()}

在以上代码中,我们使用gorm.Open方法创建了一个MySQL连接。其中,mysql表示我们要连接的数据库类型,userpassword分别为MySQL的用户名和密码,dbname为我们要连接的数据库名。

# 创建数据表

在使用Gorm操作MySQL时,我们可以通过定义Go语言结构体来创建MySQL中的数据表。在以下代码中,我们定义了一个User结构体,用于表示MySQL中的users表:

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")type User struct {  ID   int  Name string  Age  int}func main() {db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")if err != nil {panic("failed to connect database")}db.AutoMigrate(&User{})defer db.Close()}

在以上代码中,我们使用db.AutoMigrate(&User{})方法自动创建MySQL中的users表。当我们第一次执行以上代码时,Gorm会自动创建具有与User结构体相同的字段的users表。

# 插入数据

在创建了MySQL数据表之后,我们可以插入数据。在以下代码中,我们向users表中插入了一条数据:

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")type User struct {  ID   int  Name string  Age  int}func main() {db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")if err != nil {panic("failed to connect database")}defer db.Close()user := User{Name: "Tom", Age: 18}db.Create(&user)}

在以上代码中,我们使用db.Create(&user)方法向MySQL中的users表中插入了一条数据。其中,&user表示我们要插入的数据。

# 查询数据

在插入了数据之后,我们可以使用Gorm查询数据。在以下代码中,我们查询了MySQL中的users表,并将所有数据打印出来:

import ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")type User struct {  ID   int  Name string  Age  int}func main() {db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")if err != nil {panic("failed to connect database")}defer db.Close()var users Userdb.Find(&users)fmt.Println(users)}

在以上代码中,我们使用db.Find(&users)方法查询MySQL中的users表,并将所有数据存储在users变量中。然后,我们使用fmt.Println(users)打印出了所有数据。

# 更新数据

在查询到数据之后,我们可以使用Gorm更新数据。在以下代码中,我们更新了MySQL中的users表中的一条数据:

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")type User struct {  ID   int  Name string  Age  int}func main() {db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")if err != nil {panic("failed to connect database")}defer db.Close()var user Userdb.First(&user)user.Name = "Jack"user.Age = 20db.Save(&user)}

在以上代码中,我们使用db.First(&user)方法查询MySQL中的users表中的一条数据,并将其存储在user变量中。然后,我们修改了该数据的NameAge字段,并使用db.Save(&user)方法保存数据。

# 删除数据

在使用Gorm操作MySQL时,我们也可以删除数据。在以下代码中,我们删除了MySQL中的users表中的一条数据:

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")type User struct {  ID   int  Name string  Age  int}func main() {db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")if err != nil {panic("failed to connect database")}defer db.Close()var user Userdb.First(&user)db.Delete(&user)}

在以上代码中,我们使用db.First(&user)方法查询MySQL中的users表中的一条数据,并将其存储在user变量中。然后,我们使用db.Delete(&user)方法删除该数据。

# 结语

在本文中,我们演示了如何使用Gorm ORM框架操作MySQL。我们不仅创建了数据表、插入了数据和查询了数据,还更新了数据和删除了数据。如果你是一名Go语言开发者,我相信你会发现Gorm是一个非常优秀的ORM框架,并且可以大大提高你的开发效率。

相关文章

Golang中的Docker部署打造快速、高效的开发环境

Golang项目中如何避免SQL注入、XSS等安全漏洞?

Go语言开发的Web框架比较gin、beego、echo

golang算法与数据结构实现高效的搜索、排序和加密算法

使用Go语言编写高效且协作良好的WebSocket服务器

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

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