gorm操作SQL实现增删改查 | 青训营

49 阅读3分钟

在本次的后端青训营大项目开发中,数据的存储也是一个很重要的部分,无论是用户信息还是视频信息,我们都需要将它存储到数据库中,来实现持久化存储。篇文章将简单介绍gorm对SQL数据库的基本操作。

gorm是什么

对于gorm我们首先需要对orm有所了解,下面这段话引用自360百科对orm的介绍。简单来说orm可以使我们像操作对象一样操作数据库。

对象-关系映射(OBJECT/RELATIONALMAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法 。O R M 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化 。

而GORM是使用Go语言开发的友好的ORM库

库安装

首先需要安装gorm的库

go get -u github.com/jinzhu/gorm

连接数据库

第一个参数表示我们选择的是mysql数据库,第二个参数则下面这些信息。最后要记得关闭数据库。

driverName := "mysql"
host := "127.0.0.1" 
port := "3306"
database := "你的数据库名"
username := "你的mysql用户名"
password := "你的mysql密码"
charset := "utf8"
args := fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=%s&parseTime=true",
		username,
		password,
		host,
		port,
		database,
		charset)

db, err := gorm.Open(driverName, args)

定义模型

我们需要对模型进行定义,作为数据库表的的结构,例如这样定义了一个user的结构体。

type User struct {  
    Id int64 `json:"id,omitempty"` //唯一序号字段  
    Username string `json:"username,omitempty"` //用户名(唯一)  
    Name string `json:"name,omitempty"` //用户昵称  
    Password string `json:"password,omitempty"` //密码  
}

自动迁移

然后就可以用gorm的迁移功能来创建表,如下代码所示。 db.AutoMigrate(&User{})

这步完成后在sql中就可以看到这样一张表

sql.png

插入

接着我们试着往表中插入一条数据

user1 := User{  
    Name: "张三",  
    Username: "zhangsan",  
    Password: "123456",  
}  
if err := db.Create(&user1); err != nil {  
    fmt.Println(err)  
}

以同样的方式再插入一条李四的数据

user2 := User{  
    Name: "李四",  
    Username: "lisi",  
    Password: "123456",  
}

可以看到此时表中已经有了两条数据 image.png

查询

然后我们尝试着查询这个user表中的第一条记录

var u = new(User)  
db.First(u)  
fmt.Printf("%v\n", u)

也可以给查询增加一些条件,比如这样就可以找到叫做name值为张三的记录。

var uu User  
db.First(&uu, "name=?", "张三")  
fmt.Printf("%v\n", uu)

另外可以用find来查找所有符合条件的记录,具体操作类似

更新

这时候我们发现张三的名字打错了,他应该叫张仨,就可以使用更新操作,具体如下。

db.Model(&User{}).Where("name", "张三").Update("name", "张仨")

删除

删除一条记录的操作如下所示,如删除李四的记录

db.Where("name=?", "李四").Delete(&User{})

如此就完成了gorm对sql的更删改查操作,更新和查找类似,都是通过where语句查询到需要操作的记录,然后对其进行修改。