返回顶部
首页 > 资讯 > 数据库 >【Gin】Gin 使用 GORM 操作 MySQL 数据库
  • 792
分享到

【Gin】Gin 使用 GORM 操作 MySQL 数据库

gingolang 2023-09-02 10:09:52 792人浏览 独家记忆
摘要

文章目录 GORM⭐️GORM 介绍⭐️Gin 当中使用 GORM⭐️CRUD⭐️查询语句详解⭐️查看执行的 sql 语句 作者的 Gin 框架学习是根据 B站视频 Gin教程_

文章目录


作者的 Gin 框架学习是根据 B站视频 Gin教程_Golang框架Gin入门实战教程 来学习的,对大地老师的评价不吹不捧,很喜欢其讲课风格,而且这个视频特别适合小白学习,强烈推荐。

GORM

⭐️GoRM 介绍

官网:https://gorm.io/

GORM 是golang 的一个 orm 框架。ORM 就是通过实例对象的语法,完成关系数据库的操作的技术,是“对象-关系映射”(Object-Relational Mapping)的缩写。使用 orm 框架可以让我们更方便的操作数据库

GORM 支持的数据库类型有:Mysqlpostgresqlsqlite、SQL Server

特性(摘自官网)

  • 全功能 ORM
  • 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
  • Create,Save,Update,Delete,Find 中钩子方法
  • 支持 PreloadJoins 的预加载
  • 事务,嵌套事务,Save Point,Rollback To Saved Point
  • Context、预编译模式、DryRun 模式
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • SQL 构建器,Upsert,数据库,Optimizer/Index/Comment Hint,命名参数,子查询
  • 复合主键,索引,约束
  • Auto Migration
  • 自定义 Logger
  • 灵活的可扩展插件 api:Database Resolver(多数据库,读写分离)、prometheus
  • 每个特性都经过了测试的重重考验
  • 开发者友好

⭐️Gin 当中使用 GORM

安装
如果使用 go mod 管理项目的话可以忽略此步骤

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

Gin 当中使用 GORM 连接数据库
在 models 下新建 core.go 建立数据库连接

package modelsimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm")var DB *gorm.DBvar err errorfunc init() {// 参考 https://GitHub.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn := "root:123456@tcp(127.0.0.1:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local"DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println(err)}}

定义操作数据库的模型(相当于 Java 当中的实体类)

定义数据库模型注意以下几点:

结构体的名称必须首字母大写。并和数据库表名称对应。例如:表名称为 user 结构体名称定义为 User,表名称为 article_cate 的结构体名称定义为 ArticleCate。

结构体当中的字段名称首字母必须大写。并和数据库表中的字段一一对应。例如:下面结构体中的 Id 和数据库中的 id 对应,Username 和数据库中的 username 对应,Age 和数据库中的 age 对应,Email 和数据库中的 email 对应,AddTime 和数据库中的 add_time 字段对应。

默认情况表名是结构体名称的复数形式。如果我们的结构体名称定义为 User ,表示这个模型默认操作的是 users 表。

我们可以使用结构体中的自定义方法 TableName 改变结构体的默认表名称

func (user User) TableName() string{return "user"}

定义 user 模型

package modelstype User struct {Id       intUsername stringAge      intEmail    stringAddTime  int}// TableName 表示配置操作数据库的表名称func (user User) TableName() string {return "user"}

⭐️CRUD

找到要操作数据库表的控制器,然后引入 models 模块

package adminimport ("Gin_demo/models""fmt""github.com/gin-gonic/gin""net/Http""path")type UserController struct {BaseController}func (con UserController) Index(c *gin.Context) {// 查询数据库// 查询年龄大于20的用户userList := []models.User{}models.DB.Where("age>20").Find(&userList)c.JSON(http.StatusOK, gin.H{"result": userList,})}func (con UserController) Add(c *gin.Context) {user := models.User{Username: "zhaoliu",Age:      25,Email:    "111@qq.com",AddTime:  int(models.GetUnix()),}models.DB.Create(&user)c.String(http.StatusOK, "增加数据成功!")fmt.Println("user==>", user)}func (con UserController) Edit(c *gin.Context) {// 保存所有字段// 查询 id 等于 6 的数据user := models.User{}models.DB.Where("id=?", 1).Find(&user)user.Username = "haha"user.AddTime = int(models.GetUnix())models.DB.Save(&user)c.jsON(http.StatusOK, gin.H{"result": user,})}func (con UserController) Delete(c *gin.Context) {user := models.User{}models.DB.Where("id=?", 4).Delete(&user)c.String(200, "删除成功")}

⭐️查询语句详解

https://gorm.io/zh_CN/docs/query.html

package adminimport ("Gin_demo/models""github.com/gin-gonic/gin")type NavJSON struct {Id    int    `json:"id"`Title string `json:"title"`}type NavController struct {BaseController}func (j NavJSON) TableName() string {return "nav"}func (con NavController) Index(c *gin.Context) {// 查询全部数据// 查询单条数据// 查询id大于3的数据// 查询id大于3 AND id小于6的数据// 使用in 查询id 在 3 5 6 当中的数据// like// between and// Or// 使用 Select 指定返回的字段// 排序// 分页// CountnavList := []models.Nav{}var num int64models.DB.Find(&navList).Count(&num)c.JSON(200, gin.H{"result": num,})}

⭐️查看执行的 sql 语句

package modelsimport ("fmt""gorm.io/driver/mysql""gorm.io/gorm""gorm.io/gorm/logger""gorm.io/gorm/schema")var DB *gorm.DBvar err errorfunc init() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn := "root:123456@tcp(127.0.0.1:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local"DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: logger.Default.LogMode(logger.Info),NamingStrategy: schema.NamingStrategy{SingularTable: true,},})if err != nil {fmt.Println(err)}}

来源地址:https://blog.csdn.net/JN_HoweveR/article/details/129823463

您可能感兴趣的文档:

--结束END--

本文标题: 【Gin】Gin 使用 GORM 操作 MySQL 数据库

本文链接: https://www.lsjlt.com/news/390558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【Gin】Gin 使用 GORM 操作 MySQL 数据库
    文章目录 GORM⭐️GORM 介绍⭐️Gin 当中使用 GORM⭐️CRUD⭐️查询语句详解⭐️查看执行的 sql 语句 作者的 Gin 框架学习是根据 B站视频 Gin教程_...
    99+
    2023-09-02
    gin golang
  • 使用gorm怎么对MySql数据库进行操作
    本篇文章给大家分享的是有关使用gorm怎么对MySql数据库进行操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、表中字段区分大小写的设置在使用gorm查询的时候,会出现账...
    99+
    2023-06-07
  • 如何使用Gorm操作Oracle数据库
    本篇内容主要讲解“如何使用Gorm操作Oracle数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Gorm操作Oracle数据库”吧!下载依赖go get github.com/ce...
    99+
    2023-07-02
  • 如何使用 gin 为 gorm 安装 Postgres 驱动程序?
    php小编小新在这里向大家介绍如何使用gin为gorm安装Postgres驱动程序。Gin是一款用于构建高性能Web应用程序的Go语言框架,而Gorm是Go语言中流行的ORM库。如果你...
    99+
    2024-02-09
    go语言
  • 如何在python中使用gin库
    这篇文章将为大家详细讲解有关如何在python中使用gin库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-14
  • 使用Gorm操作Oracle数据库踩坑记录
    目录下载依赖项目结构编辑go.mod将gorm降级定义model类型连接数据库 测试运行gorm是目前用得最多的go语言orm库,但是目前gorm官方并不支持oracle的驱动,需要用到第三驱动,最近有个项目要...
    99+
    2022-06-14
    Gorm操作Oracle
  • Go语言使用GORM操作数据库使用指南
    目录简介安装 GORM连接到数据库定义模型自动迁移基本 CRUD 操作插入记录查询记录更新记录删除记录详细api详解1. 查询2. 插入3. 更新4. 删除总结简介 GORM(全称为...
    99+
    2023-05-20
    Go语言 GORM操作数据库 Go语言 操作数据库 Go GORM 数据库 Go语言 GORM
  • 聊聊python的gin库的介绍和使用
    1.简介 由于现在很多机器学习的实验需要设置繁琐的参数,在多次实验中,有些参数是一样的,为了方便设置参数,Gin库出现了。它允许函数或类被注释为@gin.configurable,这...
    99+
    2024-04-02
  • Go结合Gin导出Mysql数据到Excel表格
    目录1、实现目标2、使用的库3、项目目录4、主要代码编写4.1、excelize.go(主要工具类)4.2、userService.go(接受请求)4.2、测试结果5、文档代码地址1...
    99+
    2024-04-02
  • 使用Python操作MySql数据库和MsSql数据库
    目录一、MySQL数据库模块的安装和连接1、 PyMySQL模块的安装2 、python连接数据库二、创建表操作三、操作数据1、插入操作2、 查询操作3、 更新操作4、 删除操作四、...
    99+
    2024-04-02
  • 【MySQL】数据库——库操作
    文章目录 1. 创建数据库[IF NOT EXISTS] 的使用 2. 删除库3. 数据库的编码问题查看系统默认支持的字符集查看系统默认支持的校验集只查看 database的校验集指定编码...
    99+
    2023-10-20
    数据库 mysql
  • Python操作使用MySQL数据库方法
    下面一起来了解下Python操作使用MySQL数据库方法,相信大家看完肯定会受益匪浅,文字在精不在多,希望Python操作使用MySQL数据库方法这篇短内容是你想要的。一,安装mysql 如果是w...
    99+
    2024-04-02
  • 如何使用SQL操作MySQL数据库
    本篇内容主要讲解“如何使用SQL操作MySQL数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用SQL操作MySQL数据库”吧!从本节开始正式介绍各种...
    99+
    2024-04-02
  • 怎么使用ScalikeJDBC操作MySQL数据库
    本篇内容介绍了“怎么使用ScalikeJDBC操作MySQL数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • 使用Python怎么操作MySQL数据库
    本篇文章给大家分享的是有关使用Python怎么操作MySQL数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MySQL 建表建表的时候,遇到一些坑,没有解决,如修改 MyS...
    99+
    2023-06-14
  • 【MySQL】1、使用终端操作数据库
    【MySQL】1、使用终端操作数据库 前言一、使用终端操作数据库1. 数据库登录2. 查看数据库3. 选择某一个数据库4. 查看数据库中有哪些表5. 查询表中的数据6. 退出7. 在数据库服务...
    99+
    2023-10-06
    数据库 mysql
  • 怎么使用efcore操作mysql数据库
    要使用Entity Framework Core (EF Core) 操作 MySQL 数据库,你需要按照以下步骤进行: 安装相...
    99+
    2024-05-13
    efcore mysql
  • golang gorm框架数据库的连接操作示例
    目录1. 连接数据库1.1 MySQL1.2 PostgreSQL1.3 Sqlite31.4 不支持的数据库2. 迁移2.1. 自动迁移2.2. 检查表是否存在2.3. 创建表2....
    99+
    2024-04-02
  • MySql数据库操作
    MySql数据库操作 –登录MySql:——–Windows环境进入cmd后输入mysql –h localhost –u root –p,再输入密码就可以启动mysql;其中localhost是...
    99+
    2024-04-02
  • 操作MySQL数据库
    SQL是什么    SQL是结构化查询语言,这是一种计算机语言,用于存储,操纵和检索存储在关系数据库中的数据。    SQL是关系数据库系统的标准语言。所有关系型数据...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作