
GORM
文章平均质量分 80
GORM 学习
鳄梨阿龙
这个作者很懒,什么都没留下…
展开
-
GORM 学习笔记 命名策略&连接数据库&日志
对象关系映射(Object Relation Mapping)模式是一种为了解决面向对象与关系数据库,如mysql,存在的互不匹配的现象的技术,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。使用一个类表示一张表,类中的属性表示表的字段,类的实例化对象表示一条记录GORM是Go语言的一个ORM(Object Relational Mapping)库。它可以让我们通过Go来操作数据库中的数据。在MySQL或其他数据库中先创建Schema。原创 2023-11-22 17:15:45 · 1231 阅读 · 0 评论 -
GORM 一对一关系 Has one -Belongs to
与另一个模型建立一对一的关联,但它和一对一关系有些许不同。这种关联表明一个模型的每个实例都包含或拥有另一个模型的一个实例。为了方便从主表结构体查询子表内容,或者相互查询,可以采用类似如下的定义方法。那么就可以把它拆分为两张表,常用的字段放主表,不常用的字段放详情表。user表中有主键id和姓名,idcard中有对应的用户id以及其他。我们建立两张表,一张用户表user,一张身份证表idcard。一对一的删除与多对多的相同,可以查看一对一的。一对一关系比较少,一般用于表的扩展。例如一张用户表,有很多字段。原创 2023-12-01 17:04:05 · 560 阅读 · 0 评论 -
GORM 创建HOOK 钩子
Hook 是在创建、查询、更新、删除等操作之前、之后调用的函数。如果您已经为模型定义了指定的方法,它会在创建、更新、查询、删除时自动被调用。如果任何回调返回错误,GORM 将停止后续的操作并回滚事务。钩子方法的函数签名应该是可以看到在创建记录时的email为BeforeCreate中设置的。原创 2023-11-24 22:17:33 · 674 阅读 · 0 评论 -
GORM 模型定义&表的迁移(自动生成)
模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成。若字段名小写,则无法跨包访问,无法生成相关表的相关字段。原创 2023-11-22 19:36:32 · 699 阅读 · 0 评论 -
GORM 一对多关系 HasMany
这里贴。原创 2023-11-27 23:44:23 · 607 阅读 · 0 评论 -
GORM 多对多many2many 自定义连接表
默认的连接表,只有双方的主键id,展示不了更多信息了,为了ID uint"`ID uint"` //当使用反向引用时需要在setUpJoinTable时多设置一次这个表的 @@@// Article2tag 自定义连接表TagID uint `gorm:"primaryKey "` //上两项即为连接表默认项CreatedAt time.Time //自定义添加一个创建时间字段当定义的表复杂时,gorm自动的主键名可能比较冗长,我们可以通过自定义主键名来简单化主要要注释的是连接主键ID。原创 2023-12-04 23:00:06 · 3473 阅读 · 0 评论 -
GO GORM 自定义数据类型-枚举
很多时候,由于字符串的所占据空间较大,而某些状态的值是一定的,所以我们希望用枚举来固定对应的值。这样不仅可以节省空间,更关键的是可以方便后期的维护。我们跳过原文章中方法逐步优化的过程,直接到最完善的版本,即使用数字表示状态和使用类型别名的方法,最后通过手动逻辑方法来实现golang中的枚举。我们这里以主机管理为例,状态有 Running 运行中, OffLine 离线, Except 异常。原创 2023-12-07 23:03:28 · 1191 阅读 · 0 评论 -
GORM 单表 增删查改 DML
如果save value不包含主键,它将执行Create,否则将执行Update(包含所有字段)。同样使用Take方法,根据其他条件查询,使用?作为占位符,将查询内容放入,这里为查询age=22的记录。查询多条记录一般使用find方法,take只能获取一条记录,这里不再适用。如果要传零值,可以使用select或map,这里使用map来进行展示。更新指定字段, 跟直接save效果一致,但执行的sql语句不一致。Take的第二个参数,默认根据主键查询。多表通过建立切片来进行多个记录的插入。原创 2023-11-24 21:15:49 · 1026 阅读 · 0 评论 -
GORM 高级查询 排序-去重-分组-原生...
{0 李元芳 32 false} {0 张武 18 false} {0 枫枫 23 false} {0 刘大 54 false} {0 李武 23 false} {0 李琦 14 false} {0 晓梅 25 false} {0 如燕 26 false} {0 魔灵 21 false}]GORM 允许通过 Select 方法选择特定的字段,如果您在应用程序中经常使用此功能,你也可以定义一个较小的。Scopes 允许你指定常用的查询,可以在调用方法时引用这些查询。原创 2023-11-27 00:56:06 · 2461 阅读 · 0 评论 -
GORM 自定义数据类型json-切片(数组)
数据空中很多情况下数据是多变的,我们这篇文章将以json和数组为例学习GORM的自定义数据类型方法。自定义的数据类型必须实现Scanner和Valuer接口,以便让 GORM 知道如何将该类型接收、保存到数据库通过两个接口将json、数组转换为字符串类型,其实际为序列化和反序列化的过程// Info json的序列化与反序列化的实例,定义Info的信息,方便后续进行转化及查询// User 定义User表,表中的Info字段想要传入的即为json类型的数据。原创 2023-12-07 20:15:17 · 2454 阅读 · 0 评论