Go-Gorm-基本操作

文章目录

  • 摘要
  • 一、Gorm的基本操作
    • 1.1 定义结构体模型
      • 结构标签
      • 关联的结构标签
    • 1.2 连接数据库
    • 1.3 "绑"
    • 1.4 "增"
    • 1.5 "查"
    • 1.6 "改"
    • 1.7 "删"

摘要

Gorm是go语言中操作mysql数据库的开发框架,该框架可以将程序中结构体的字段和mysql数据库键值对中的"键"绑定,让我们不必再专门编写sql语句操作数据库,可以操作结构体将数据存入数据库。


一、Gorm的基本操作

本节讲的是Gorm如何绑定结构体,对数据库进行增删查改的基本操作。
主要流程是:

  1. 定义结构体模型;
  2. gorm.open()连接数据库;
  3. db.AutoMigrate()将结构体模型与数据库表绑定,使其一一对应;
  4. db.Create()创建数据表或者添加数据;

1.1 定义结构体模型

在定义结构体模型时,可以加上一些标签,该标签是为了让数据库知道,该结构体字段是主键、数据类型等等,如:

type Strudent struct {
	ID int `gorm:"PRIMARY_KEY"` //主键约束
	Name  string  `gorm:"type:varchar(20)"`	//类型为varchar(20)
	Age uint
}

Grom默认将字段名为"ID"作为主键,故可写成也可写成:

type Strudent struct {
	ID int  //Grom默认将字段名为"ID"作为主键
	Name  string  `gorm:"type:varchar(20)"`	//类型为varchar(20)
	Age uint
}
  1. Grom会默认表名为结构体名的复数,也就是students;
  2. 默认列名为结构体字段的小写形式,如结构体字段为Age,则该字段对应的默认列名为age;

结构标签

Go-Gorm-基本操作_第1张图片

关联的结构标签

Go-Gorm-基本操作_第2张图片

1.2 连接数据库

连接前准备: 导入gorm和mysql驱动(默认已经安装mysql):

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

gorm.open连接mysql数据库(默认已经创建了名叫test1数据库):

db, err = gorm.open("mysql", "root:123456@(127.0.0.1:3306)/test1?charset=utf8mb4&parseTime=True&Local")

连接成功,用db接收返回的数据库操作实例(*gorm DB);后面增删查改都是调用该实例的函数操作。

1.3 “绑”

db.AutoMigrate()将结构体模型与数据库表绑定,使其一一对应,该过程也叫”自动迁移“:

db.AutoMigrate(&Student)

1.4 “增”

在添加数据前需要实例化结构体:

stu1 := Student{Name:"张三", Age:"66"}

然后用db.Create()创建表,若表已存在则向表中添加数据:

db.Create(&stu1)

执行两次的结果:
Go-Gorm-基本操作_第3张图片
更多可看官方文档

1.5 “查”

单条数据查询db.First(&s),并将查询是数据存入s中:

var s Student
db.First(&s)

在这里插入图片描述
查询全部数据db.Find(),并将查询是数据存入s中:

  1. 查询多条记录需要定义一个结构体数组存储查找的数据

    var ss []Student
    
  2. 查找数据存放在ss中:

    db.Find(&ss)
    

查找结果:
在这里插入图片描述
更多的可看官方文档

1.6 “改”

修改数据表中内容首先需要定义个含有主键结构体model类:

s := Student{ID: 2}

再用db.Model(&s).Update()更新数据(注意只会更新再Update()括号内修改过的内容):

db.Model(&s).Update("Name":"王小五")

更多的可看官方文档

1.7 “删”

批量删除:

  1. 通过db.Find(&s)查找,找到数据表中所有元素,存入s中;

    	var s []Student
    	db.Find(&s)
    
  2. 用db.Where().delete()删除符合条件是所有元素;

    db.Where("name like ?", "%四").Delete(&s)
    

更多的可看官方文档

你可能感兴趣的:(笔记,golang,数据库,mysql)