当前位置: 首页 > 网络应用技术

Golang Gorm实际战斗(3)|数据模型

时间:2023-03-06 20:37:20 网络应用技术

  该文章首先发表在公共帐户[程序员阅读]中,欢迎来到。

  这是“ Golang Gorm”系列的第三部分。在本文中,让我们谈谈GORS数据模型的一些细节。

  Gorm的数据模型是标准GO结构。数据模型代表数据表。该模型由基本数据类型的自定义类型和指针或别名组成,并实现扫描仪和估价师界面的自定义类型。例如:::

  对于数据表的每个数据,都有一个自我信息的主键,创建,更新和删除时间。因此,Gorm提取它并定义Gorm.Model,例如:

  如有必要,我们可以将gorm.model嵌入我们的模型中,而无需重复这些字段,例如:

  嵌入Gorm.Model中的用户等同于以下用户:

  我们已经将Gorm.Model嵌入了我们自己的定义结构中。当然,我们还可以嵌入自定义的结构和匿名嵌入。此方法与上述方法相同,例如:

  您需要声明要嵌入的字段标签,而不是匿名嵌入,即正常的结构字段。否则,它将被GORM视为相关模型,但没有定义关系,因此将报告错误,例如:

  此外,无论是在正常结构中嵌入还是匿名,您都可以使用字段标签来指定嵌入式结构的所有字段的前缀,例如:::

  Gorm默认情况下将使用ID作为数据表的主要密钥,例如:

  如果ID是整数并且是自我提示字段,则它将在新增加时自动填充该值,例如:

  如果要将其他字段设置为主要键,则可以通过字段标签指定,例如:

  此外,还可以将多个字段设置为字段,由多个字段组成的主要键也称为复合主键,例如::::

  无论是ID还是单个字段主键,还是通过主键组合的主键设置,如果该字段的数据类型是整数,Gorm都会将字段设置为self -increase field(auto_increment),可以通过设置为将其设置为错误的。用于审查

  Gorm同意使用创建,更新,DeletEdat跟踪记录,更新和软删除时间。如果这些字段是在数据模型中定义的,则它将自动填充创建,更新和软删除记录的时间。

  如果数据模型具有创建的字段,在创建记录时,如果没有创建的值,则该字段的值将设置为当前时间。

  您也可以指定自己

  您也可以手动修改

  使用删除数据表记录时,删除deletatdelettedat字段将起作用。具体来说,我们将涉及该系列中其他文章中的删除记录。

  Gorm将数据表的结构用作数据表名称。例如,对于用户结构,其表名是用户,并且游戏用户结构的表名是game_users。

  但是,如果您不想根据GOR的规则指定数据表名称,则可以允许数据模型实现表接口。接口的定义如下:

  让用户结构实现表接口,例如:

  当然,除了定义模型的模型外,您还可以使用范围动态生成表名称,或者首先执行创建,查找,获取,保存,更新,删除和其他方法,并临时指定数据表名。当然,如果您想指定模型的表名称,则定义模型的表格方法最简单,因此建议通过此方法指定表名。

  数据表列表还使用数据模型,例如:

  但是,您可以使用列标签覆盖列表,例如:

  对于数据模型(模型),现场标签不是必需的,而是可选的。标签不敏感,但建议使用表中列出的名称。

  Columb指定数据表名称类型列数据类型大小指定列Size主键指定列为主键,默认ID是指定为唯一指定列指定指定列不指定指定列的唯一默认指定默认值null指定列。指定自动增长自动插入的自动步骤,控制连续记录嵌入嵌套的嵌套字段嵌入嵌入的嵌入式嵌入式嵌入式嵌入式字段,以跟踪当前时间。对于INT字段,它可以跟踪第二次邮票。您可以使用它。nano/milli来跟踪纳秒和毫秒的时间戳,例如:autocreateTime:nanoAutoupdateTime创建/更新当前时间。对于int字段,它将跟踪第二个-Level Timestamp.poke。多个字段使用相同名称创建复合索引。查看索引以获取唯一索引的详细信息为相同,但是创建了唯一的索引检查创建约束。例如,检查:年龄> 13,查看约束获取详细信息<-设置字段写入的权限, <-:create 只创建、<-:update 只更新、<-:false 无写入权限、<- 创建和更新权限->设置字段读的权限,->:false无与伦比的永久性尊贵的字段评论在该字段创建该评论时。上面的字段标签用于迁移数据表,但不建议使用GORM的数据迁移功能。这是因为数据是用于数据的。表的创建,删除和修改是相对显着的变化和高风险操作。因此,有必要严格评估和实施操作,而不是在程序代码中编写。

  对于上述标签描述,有一个粗糙的印象。如果需要使用,请检查文档。

  此外,下面列出的字段标签与数据模型的相关性有关。我们将在随后的文章中解释。

  forefireke将当前模型的列指定为连接表的参考表的名称,该名称指定了参考表的名称,该名称将映射为连接表键多态性的多态性类型,例如型号名称多态值。指定多态值,默认表名称musany指定连接连接连接连接台上joinForeignkey指定连接表的外部密钥名称,该名称将映射到当前表joinReferences的外部密钥名称,指定连接表,该表将其连接表映射到约束关系约束,例如:onupdate,on delete for Gormthe数据模型实际上是构造的,对应于数据库的数据表。GORM同意,许多数据模型涉及数据表的映射规则,例如表名称的蛇形复数命运规则和名称,但是我们仍然可以通过定义数据模型方法和标签来更改这些协议,例如更改通过tableename方法对应于模型的相应数据表。