前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 使用 Gorm 操作 MySQL 数据库

Go 使用 Gorm 操作 MySQL 数据库

作者头像
张云飞Vir
发布2020-04-01 17:34:15
6K0
发布2020-04-01 17:34:15
举报
文章被收录于专栏:写代码和思考写代码和思考

0. 背景

在实际开发中,要用到数据库存储数据。MySQL是一个关系型数据库管理系统 使用非常广泛。在Go语言开发中,会选择一个操作数据的类库来帮助我们完成工作。

1. 简单介绍

1.1 MySQL 数据库介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

1.2 Gorm 介绍

The fantastic ORM library for Golang Go 语言的 超棒的 ORM 类库

功能强大:

代码语言:javascript
复制
  全功能ORM(几乎)
  关联(包含一个,包含多个,属于,多对多,多种包含)
  Callbacks(创建/保存/更新/删除/查找之前/之后)
  预加载(急加载)
  事务
  复合主键
  SQL Builder
  自动迁移
  日志
  可扩展,编写基于GORM回调的插件
  每个功能都有测试
  开发人员友好

2. 操作 MySQL 数据库

2.1 加载驱动

操作mysql需要 mysql 的驱动,由于我使用 go mod 来管理依赖,直接导入包就行。

代码语言:javascript
复制
  import (
    _ "github.com/go-sql-driver/mysql"
  )

然后执行 go mod vendor 来同步更新,这时 go mod 会自动更新 go.mod文件和下载依赖包

代码语言:javascript
复制
go mod vendor

2.2 导入 gorm 包

方法同上,导入包即可。

代码语言:javascript
复制
  import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
  )

2.3 打开数据库

调用 gorm.Open 方法打开数据库

代码语言:javascript
复制
  db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
  defer db.Close()

2.4 建表

建表一般采用 数据模型同步的方式,先创建一个 model

代码语言:javascript
复制
  type AccountInfo struct {
    gorm.Model
    Name     string `gorm:"not null;unique"`
    Password string `gorm:"not null;"`
    Status   uint   `gorm:"default:0"`
  }

然后再下面这样,这时数据表会自动建立

代码语言:javascript
复制
    // 自动迁移模式
db.AutoMigrate(&AccountInfo{})

2.5 增删改查

2.5.1 创建记录

代码语言:javascript
复制
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
db.Create(&user)

2.5.2 删除/软删除

代码语言:javascript
复制
db.Delete(&email)

批量删除:

代码语言:javascript
复制
db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})

2.5.3 更新

更新整个记录

代码语言:javascript
复制
user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)

如果只想更新更改的字段,可以使用Update, Updates

代码语言:javascript
复制
  // 更新单个属性
  db.Model(&user).Update("name", "hello")

2.5.4 where 查询

// 获取第一个匹配记录

代码语言:javascript
复制
  db.Where("name = ?", "jinzhu").First(&user)
    //// SELECT * FROM users WHERE name = 'jinzhu' limit 1;

// 获取所有匹配记录

代码语言:javascript
复制
  db.Where("name = ?", "jinzhu").Find(&users)

2.5.5 count

使用 count 查询

代码语言:javascript
复制
db.Table("deleted_users").Count(&count)

3. 参考

https://gorm.io/docs/

http://gorm.book.jasperxu.com/crud.html#q

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 背景
  • 1. 简单介绍
    • 1.1 MySQL 数据库介绍
      • 1.2 Gorm 介绍
      • 2. 操作 MySQL 数据库
        • 2.1 加载驱动
          • 2.2 导入 gorm 包
            • 2.3 打开数据库
              • 2.4 建表
                • 2.5 增删改查
                  • 2.5.1 创建记录
                  • 2.5.2 删除/软删除
                  • 2.5.3 更新
                  • 2.5.4 where 查询
                  • 2.5.5 count
              • 3. 参考
              相关产品与服务
              数据库管理
              数据库管理(Database Management Center,DMC)是一个高效,安全,可靠的数据库一站式管理平台。DMC 提供可视化的库管理、实例会话管理、SQL 窗口、SQL 安全审计、SQL 变更审批、实时监控、操作审计等数据库管理能力,集成诊断优化和数据可视化分析能力,从而简化和规范数据库管理操作、降低数据库运维门槛、提升运维效率。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档