当前位置: 首页 > news >正文

使用 GORM 连接数据库并实现增删改查操作

步骤 1:安装 GORM

首先,我们需要安装 GORM 包。在终端中运行以下命令:
shell
go get -u gorm.io/gorm

步骤 2:导入所需的包

在 Go 代码的开头导入以下包:

import ("gorm.io/driver/mysql" // 如果你使用的是 MySQL 数据库"gorm.io/gorm"
)

步骤 3:建立数据库连接

在代码中建立数据库连接,示例中使用 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("无法连接数据库")}defer db.Close()
}

请确保替换 userpassworddbname 为你的实际数据库凭据和名称。

步骤 4:定义模型结构

在 GORM 中,我们需要定义模型结构来映射数据库表。下面是一个示例模型结构:

type User struct {gorm.ModelName  stringEmail string
}

在这个示例中,我们定义了一个名为 User 的模型,它包含了 NameEmail 两个字段。

步骤 5:创建表和迁移

在 GORM 中,我们可以使用 AutoMigrate 方法来创建表和进行迁移。在 main 函数中添加以下代码:

func main() {// ...// 创建表和进行迁移db.AutoMigrate(&User{})
}

这将根据模型结构自动创建名为 users 的表。

步骤 6:实现增删改查操作

现在,我们可以使用 GORM 提供的方法来执行增删改查操作。以下是一些示例:

创建记录

func createUser(db *gorm.DB, name, email string) {user := User{Name: name, Email: email}db.Create(&user)
}

查询记录

func getUserByID(db *gorm.DB, id uint) (User, error) {var user Userresult := db.First(&user, id)if result.Error != nil {return user, result.Error}return user, nil
}

更新记录

func updateUserEmail(db *gorm.DB, id uint, email string) error {user, err := getUserByID(db, id)if err != nil {return err}user.Email = emailresult := db.Save(&user)return result.Error
}

删除记录

func deleteUser(db *gorm.DB, id uint) error {result := db.Delete(&User{}, id)return result.Error
}

完整示例代码

以下是一个完整的示例代码,包含了上述所有步骤:

package mainimport ("gorm.io/driver/mysql""gorm.io/gorm"
)type User struct {gorm.ModelName  stringEmail string
}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("无法连接数据库")}defer db.Close()// 创建表和进行迁移db.AutoMigrate(&User{})// 创建记录createUser(db, "John Doe", "john@example.com")// 查询记录user, err := getUserByID(db, 1)if err != nil {panic(err)}fmt.Println(user.Name, user.Email)// 更新记录err = updateUserEmail(db, 1, "newemail@example.com")if err != nil {panic(err)}// 删除记录err = deleteUser(db, 1)if err != nil {panic(err)}
}func createUser(db *gorm.DB, name, email string) {user := User{Name: name, Email: email}db.Create(&user)
}func getUserByID(db *gorm.DB, id uint) (User, error) {var user Userresult := db.First(&user, id)if result.Error != nil {return user, result.Error}return user, nil
}func updateUserEmail(db *gorm.DB, id uint, email string) error {user, err := getUserByID(db, id)if err != nil {return err}user.Email = emailresult := db.Save(&user)return result.Error
}func deleteUser(db *gorm.DB, id uint) error {result := db.Delete(&User{}, id)return result.Error
}

这就是使用 GORM 连接数据库并实现增删改查操作的过程。希望对你有所帮助!

http://www.lryc.cn/news/101553.html

相关文章:

  • kafka集群搭建(Linux环境)
  • 树莓派本地快速搭建web服务器,并发布公网访问
  • 集合中的数据结构
  • CentOS 8 错误: Error setting up base repository
  • java外观模式
  • 3秒快速打开 jupyter notebook
  • 数据安全
  • 华为nat64配置
  • 从分片传输到并行传输之大文件传输加速技术
  • mybatisPlus入门篇
  • NineData支持最受欢迎数据库PostgreSQL
  • Redis配置类
  • 【前端知识】React 基础巩固(三十六)——RTK中的异步操作
  • 33. 本地记事本
  • Android Glide预处理preload原始图片到成品resource 预加载RecyclerViewPreloader,Kotlin
  • 亚马逊云科技全新Amazon Bedrock,助力客户构建生成式AI应用
  • 题解:ABC275 C-Counting Squares
  • 加载已训练好的目标检测YOLOv8,v5,v3,v6模型,对数据集中某张图片中的object打上方框、标出类别,并将图片保存到本地
  • 《零基础入门学习Python》第073讲:GUI的终极选择:Tkinter10
  • Shell脚本实现分库分表操作
  • 区块链实验室(12) - 网络拓扑对PBFT共识流量的影响
  • 聊聊这几年的科技风口
  • 【力扣每日一题】2023.7.30 环形链表2
  • Flink状态的理解
  • 6.3.tensorRT高级(1)-yolov5模型导出、编译到推理(无封装)
  • 如何利用设备数字化平台推动精益制造?
  • 使用Wps减小PDF文件的大小
  • 【深度学习】GPT-3
  • 在登录界面中设置登录框、多选项和按钮(HTML和CSS)
  • 【语音识别】- 声学,词汇和语言模型