go框架之GORM | 青训营笔记

76 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

一、GORM的约定:

约定大于配置,GORM里面也不例外。就比如说:
GORM使用ID字段作为主键。
使用结构体名的蛇形复数形式作为表名。比如一个结构体叫Model,那它对应的表名就是models。
字段名的蛇形作为列名。比如一个字段为Name,那么对应的列名就为name。

二、安装GORM:

使用go get -u命令,并在后面跟上github的相关地址,回车,就可以安装到GORM框架了。

三、连接数据库:

这里以连接mysql为例。
首先我们要引入mysql相关的依赖,比如说"gorm.io/driver/mysql"。
然后创建个dsn,参数有username,password等。
最后是用gorm.Open()来开启连接。

四、CRUD:

连接好数据库后,我们就可以进行一些简单的CRUD了。
1)增:
   我们通常会使用gorm.DB中的Create()来向数据库插入数据。
   增加单条数据时,可以先创建个结构体对象,然后将这个对象作为参数传入Create()即可。
   增加多条数据时,我们可以传一个类型为结构体对象的切片,示例代码如下:
   var users = []User{{Name: "user1"}, {Name: "user2"}, {Name: "user3"}} db.Create(&users)
2)删:
   删除一条数据,我们使用Delete()即可。但要注意的是,删除一条数据时,删除对象需要指定主键,否则会删除所有匹配的记录。
   软删除:
       即记录不会从数据库中被真正删除。但GORM会将DeleteAt作为当前时间,并且我们也不能通过普通的方法来到该记录。
       而如果我们不想要软消除,我们可以通过在结构体中设置:Deleted gorm.DeletedAt
       当我们想要查找被软删除的数据时,我们可以使用Unscoped来找到,示例代码如下:db.Unscoped().Where("age = 20").Find(&users)
       当我们想永久删除时,也可以使用Unscoped来删除,示例代码如下:db.Unscoped().Delete(&order)
3)改:
   Save()会保存所有的字段,即使字段是零值。
   Update()可以修改单列,但需要携带一些条件。
   Updates()可以修改多列。
4)查:
   可以使用Take()、First()、Last()方法来查询单个对象。