GORM入门学习 | 青训营

32 阅读2分钟

前言

Gorm是golong的一个ORM,封装了很多常用方法。主要用于数据库连接等相关操作。本文主要是对自己看的相关资料进行总结 由于gorm有内含十分齐全的中文文档,因此也可直接查看相关文档 gorm.io/zh_CN/

下载安装

windows系统下下载安装可以直接使用git命令行工具进行获取。

go get -u github.com/jinzhu/gorm

在代码中引用时需要引用gorm类库和对应的数据库操作的驱动

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

数据库连接操作

db,err:=gorm.Open("mysql","root:123456@tcp(127.0.0.1:3306)/testdb?charset=utf8")

gorm.Open()第一个参数表示连接的数据库的类型,第二个参数包括数据库的用户名,密码,Ip地址,端口号,具体数据库和编码规则。

db.AutoMigrate(&User{})
 
db.AutoMigrate(&User{}, &Product{}, &Order{})

gorm可以支持自动迁移,也就是自动的表结构迁移,只会创建表,补充缺少的列,缺少的索引。但并不会更改已经存在的列类型,也不会删除不再用的列,这样设计的目的是为了保护已存在的数据。可以同时针对多个表进行迁移设置。

增删查改工作

表的创建:

db.CreateTable(&User{})

在创建表后,数据库会出现表的复数形式,例如user表创建后在数据库中为user表。如果不想创建复数形式的表名,可以设置一下语句:

db.SingularTable(true) //全局设置表名不可以为复数形式。

表的删除:

r1:=db.DropTable("User") 
r2:=db.DropTable(&User{})

与创建表类似,都可以使用表名字符串或者模型地址类型进行删除。

如果在删除时需要删除两个表,并且需要用到同步概念,则需要在事务中创建。gorm中事务处理与其他语言不同,因为golang中没有try catch的结构,所以只能通过条件判断来进行处理回滚或者提交。

表的查询:

db.Select([]string{"name"}).Find(&User)

表的修改

db.Model(&User).Where("id=?", 1224343).Update("name", juejin)