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

go语言Gin框架的学习路线(七)

 GORM入门(基于七米老师)

目录

GORM入门

安装

连接数据库

连接MySQL

连接PostgreSQL

连接Sqlite3

连接SQL Server

我们搞一个连接MySQL的例子

创建数据库

GORM操作MySQL


GORM是一个流行的Go语言ORM(对象关系映射)库,它提供了一种方法来操作数据库,使得开发者可以用Go语言的代码来操作数据库,而不需要编写SQL语句。GORM支持多种数据库,包括MySQL、PostgreSQL、SQLite、SQL Server等

以下是GORM的一些主要特性:

  1. 链式操作:GORM的链式操作使得代码更加简洁和易于阅读。
  2. 自动迁移:GORM可以自动检测模型的变化并更新数据库结构。
  3. 事务支持:GORM支持事务,确保数据的一致性。
  4. 关联模型:GORM支持多种关联关系,如一对一、一对多、多对多等。
  5. 预加载:GORM支持预加载关联数据,减少数据库查询次数。
  6. 条件查询:GORM提供了丰富的条件查询接口,方便进行复杂的数据查询。
  7. 钩子函数:GORM支持在数据的创建、更新、删除等操作前后执行自定义的代码。
  8. 插件系统:GORM有一套插件系统,可以扩展其功能。

使用GORM,你可以定义一个结构体来表示数据库中的一个表,然后通过这个结构体来操作数据库中的数据。

安装

go get -u github.com/jinzhu/gorm

连接数据库

按如下方式导入需要的数据库驱动即可

import _ "github.com/jinzhu/gorm/dialects/mysql"
import _ "github.com/jinzhu/gorm/dialects/postgres"
import _ "github.com/jinzhu/gorm/dialects/sqlite"
import _ "github.com/jinzhu/gorm/dialects/mssql"

在Go语言中,import语句用来导入包以便在代码中使用。在上述代码中import语句使用了下划线_作为别名,这是一种特殊的用法,表示导入包是为了执行包的初始化代码,而不是为了在当前文件中直接使用包中的导出符号(函数、类型、变量等)。使用这种方式导入方言包,通常是在应用程序的入口文件中进行,例如main.go或应用程序的配置文件中。这样做的好处是,即使你的应用程序只使用一种数据库,你也可以通过简单地导入相应的方言包来支持多种数据库,而不需要修改大量的代码。此外,这也有助于保持代码的组织性和可维护性

连接MySQL

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql"
)func main() {db, err := gorm.Open("mysql", "user:password@(localhost)/dbname?charset=utf8mb4&parseTime=True&loc=Local")defer db.Close()
}

这段代码的主要目的是建立与MySQL数据库的连接。如果连接成功,db变量将包含数据库的连接对象,你可以使用这个对象来进行数据库操作,如查询、更新、插入和删除等。如果连接失败,err变量将包含错误信息,你可以检查这个变量来了解连接失败的原因。

连接PostgreSQL

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/postgres"
)func main() {db, err := gorm.Open("postgres", "host=myhost port=myport user=gorm dbname=gorm password=mypassword")defer db.Close()
}

这段代码的主要目的是建立与PostgreSQL数据库的连接。如果连接成功,db变量将包含数据库的连接对象,你可以使用这个对象来进行数据库操作,如查询、更新、插入和删除等。如果连接失败,err变量将包含错误信息,你可以检查这个变量来了解连接失败的原因。 

连接Sqlite3

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/sqlite"
)func main() {db, err := gorm.Open("sqlite3", "/tmp/gorm.db")defer db.Close()
}

这段代码的主要目的是建立与SQLite数据库的连接。如果连接成功,db变量将包含数据库的连接对象,你可以使用这个对象来进行数据库操作,如查询、更新、插入和删除等。如果连接失败,err变量将包含错误信息,你可以检查这个变量来了解连接失败的原因。 

连接SQL Server

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mssql"
)func main() {db, err := gorm.Open("mssql", "sqlserver://username:password@localhost:1433?database=dbname")defer db.Close()
}

这段代码的主要目的是建立与Microsoft SQL Server数据库的连接。如果连接成功,db变量将包含数据库的连接对象,你可以使用这个对象来进行数据库操作,如查询、更新、插入和删除等。如果连接失败,err变量将包含错误信息,你可以检查这个变量来了解连接失败的原因。 

我们搞一个连接MySQL的例子

创建数据库

在使用GORM前手动创建数据库db1

CREATE DATABASE db1;
GORM操作MySQL
package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" // 导入MySQL方言包,注册MySQL方言
)// UserInfo 定义用户信息的结构体
type UserInfo struct {ID     uint   // 用户IDName   string // 用户姓名Gender string // 用户性别Hobby  string // 用户爱好
}func main() {// 使用GORM打开与MySQL数据库的连接db, err := gorm.Open("mysql", "root:root1234@(127.0.0.1:13306)/db1?charset=utf8mb4&parseTime=True&loc=Local")// 检查连接是否有误,如果有误则打印错误并终止程序if err != nil {panic(err)}defer db.Close() // 确保在函数结束时关闭数据库连接// 使用AutoMigrate自动迁移UserInfo结构体到数据库,如果表不存在则创建db.AutoMigrate(&UserInfo{})// 创建两个用户信息实例u1 := UserInfo{1, "亨亨", "男", "打篮球"}u2 := UserInfo{2, "小欣", "女", "打羽毛球"}// 使用Create方法创建记录到数据库中db.Create(&u1)db.Create(&u2)// 查询操作:查询第一条记录var u = new(UserInfo)db.First(u)            // 查询结果赋值给变量ufmt.Printf("%#v\n", u) // 打印查询结果// 根据条件查询记录var uu UserInfodb.Find(&uu, "hobby=?", "打羽毛球") // 查询爱好为足球的用户信息fmt.Printf("%#v\n", uu)       // 打印查询结果// 更新操作:更新用户爱好为双色球db.Model(&u).Update("hobby", "双色球") // 通过Model指定更新对象,然后调用Update进行更新// 删除操作:删除指定的用户记录db.Delete(&u) // 通过Delete删除u指向的记录
}

这段代码是一个使用Go语言和GORM库来操作MySQL数据库的示例。下面是对代码的理解和简单记忆的方法:

  1. 包导入

    • 导入GORM库和MySQL方言包,使用下划线表示不直接使用包的内容,而是执行包的初始化代码。
  2. 定义结构体

    • UserInfo结构体代表数据库中的用户信息表,包含ID、姓名、性别和爱好四个字段。
  3. 主函数

    • main()是程序的入口点。
  4. 数据库连接

    • 使用gorm.Open函数连接到MySQL数据库,如果连接失败,使用panic终止程序。
  5. 自动迁移

    • AutoMigrate方法自动创建或修改数据库表以匹配UserInfo结构体。
  6. 创建记录

    • 创建两个UserInfo实例u1u2,然后使用Create方法将它们添加到数据库中。
  7. 查询记录

    • 使用First方法查询并打印数据库中的第一条记录。
    • 使用Find方法根据条件查询并打印特定记录(爱好为“打羽毛球”的用户)。
  8. 更新记录

    • 使用ModelUpdate方法更新指定记录的爱好字段为“双色球”。
  9. 删除记录

    • 使用Delete方法删除指定的记录。

简单记忆方法

  • 包导入:GORM和方言包。
  • 结构体:定义了数据库表的结构。
  • 连接gorm.Open连接数据库。
  • 迁移AutoMigrate创建或更新表。
  • Create添加记录。
  • FirstFind查询记录。
  • Model.Update更新记录。
  • Delete删除记录。

记住CRUD(创建Create、读取Read、更新Update、删除Delete)操作,这是数据库操作的基本流程。通过这个流程,你可以快速回忆起代码的各个部分。

  期末放假自学Gin框架,希望我们可以一起学习!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python调用chrome浏览器自动化如何选择元素
  • 函数(递归)
  • 【JAVA】数据类型及变量
  • Android Navigation 组件原理和使用教程
  • 面试问题:React基本概念,和所遇到的CPU和IO问题
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别
  • spdlog源码学习:std::unique_ptr订制删除器,guard用法,以及decltype
  • Python面试整理-Python中的函数定义和调用
  • Linux工具相关介绍
  • 网络通讯实验报告
  • jenkins 使用教程
  • 3226 使两个整数相等的位更改次数
  • 鸿蒙OpenHarmony Native API【HiLog】
  • PyQt5学习路线
  • django开发-定时任务的使用
  • flask接收请求并推入栈
  • HTML5新特性总结
  • JavaScript学习总结——原型
  • mongodb--安装和初步使用教程
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • storm drpc实例
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 译米田引理
  • zabbix3.2监控linux磁盘IO
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 说说我为什么看好Spring Cloud Alibaba
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ###C语言程序设计-----C语言学习(3)#
  • #图像处理
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (¥1011)-(一千零一拾一元整)输出
  • (04)odoo视图操作
  • (6)STL算法之转换
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Oracle)SQL优化技巧(一):分页查询
  • (WSI分类)WSI分类文献小综述 2024
  • (笔试题)合法字符串
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)JPA - JQPL 实现增删改查
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • .env.development、.env.production、.env.staging
  • .htaccess配置重写url引擎
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 发展历程
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET使用存储过程实现对数据库的增删改查