Go 使用 Gorm 操作 MySQL 数据库

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 类库

功能强大:

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

3. 操作 MySQL 数据库

3.1 加载驱动

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

  import (
    _ "github.com/go-sql-driver/mysql"
  )

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

go mod vendor

3.2 导入 gorm 包

方法同上,导入包即可。

  import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
  )

3.3 打开数据库

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

  db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
  defer db.Close()

3.4 建表

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

  type AccountInfo struct {
    gorm.Model
    Name     string `gorm:"not null;unique"`
    Password string `gorm:"not null;"`
    Status   uint   `gorm:"default:0"`
  }

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

    // 自动迁移模式
db.AutoMigrate(&AccountInfo{})

3.5 增删改查

3.5.1 创建记录

user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
db.Create(&user)

3.5.2 删除/软删除

db.Delete(&email)

批量删除:

db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})

3.5.3 更新

更新整个记录

user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)

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

  // 更新单个属性
  db.Model(&user).Update("name", "hello")

3.5.4 where 查询

// 获取第一个匹配记录

  db.Where("name = ?", "jinzhu").First(&user)
     SELECT * FROM users WHERE name = 'jinzhu' limit 1;

// 获取所有匹配记录

  db.Where("name = ?", "jinzhu").Find(&users)

3.5.5 count

使用 count 查询

db.Table("deleted_users").Count(&count)

4. 参考

https://gorm.io/docs/

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值