【Gorm】模型定义

2025虚幻游戏逆向工程解包尝试 2025虚幻游戏逆向工程解包指南 本文详细介绍了虚幻引擎5游戏逆向解包的完整流程,主要包括获取AES密钥、生成映射文件和导出资源三个关键步骤。作者在实际操作中遇到诸多难题:AES密钥获取工具存在加壳保护问题,映射文件生成器依赖复杂的VS编译环境,DLL注入工具的使用也存在技术门槛。通过多次尝试,作者发现部分游戏可直接搜索现成的AES密钥,而映射文件生成需要额外下载Memcury依赖库才能正常编译。文章提供了相关工具的下载链接和具体操作说明,但同时也指出每个环节都可能出现意外状况,逆向工程实际执行过程远比理论 阅读详情

intro

package main

import (
  "gorm.io/gorm"
  "gorm.io/driver/sqlite" // GORM 使用该驱动来连接和操作 SQLite 数据库。
)

type Product struct {
  gorm.Model //  嵌入GORM 内置的模型结构,包含 ID、CreatedAt、UpdatedAt、DeletedAt 四个字段
  Code  string
  Price uint
}

func main() {
  db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) // 使用 SQLite 驱动打开名为 "test.db" 的数据库文件,并用默认配置初始化 GORM
  if err != nil {
    panic("failed to connect database")
  }

  // 迁移 schema
  db.AutoMigrate(&Product{}) // 根据 Product 结构体自动创建或更新数据库中的表结构,确保数据表与结构体一致。

  // Create 在数据库中插入一条新记录
  db.Create(&Product{Code: "D42", Price: 100})

  // Read
  var product Product // 用来存储查询结果
  db.First(&product, 1) // 根据整型主键查找
  db.First(&product, "code = ?", "D42") // 通过条件查找,查找 code 字段值为 D42 的记录

  // Update - 将 product 的 price 更新为 200
  db.Model(&product).Update("Price", 200)
  // Update - 更新多个字段
  // 使用结构体 Product 作为参数更新多个字段,此方式只会更新结构体中非零值的字段。
  db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段
  // 使用 map 更新字段,可以同时更新多个字段,不受非零值的限制
  db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

  // Delete - 删除 product
  db.Delete(&product, 1)
}
  • gorm.Config{}:这是一个结构体字面量,用于创建一个 gorm.Config 类型的实例,其中的各个字段都被赋予了默认的零值(如果没有显式指定)。
  • & 运算符:在结构体字面量前加 &,表示取这个实例的地址,也就是生成一个指向 gorm.Config 实例的指针。
  • 传递指针而非值,可以使函数 gorm.Open 修改或读取配置,同时也避免了结构体值的拷贝。

数据库迁移(schema migration)

  • 定义:数据库迁移是指对数据库表结构进行创建、修改或删除的过程。
  • 自动迁移:GORM 提供了 AutoMigrate 方法,可以根据你的 Go 结构体(模型)自动创建或更新数据库中的表结构。
    • 示例:db.AutoMigrate(&User{}) 会检查 User 模型,并自动生成或调整表结构来匹配这个模型。
  • 优点:
    • 让你无需手动编写 SQL 语句来创建或修改表结构。
    • 保证模型和数据库结构保持一致。
  • 局限性:
    • 对于复杂的结构变更(如大规模数据迁移、索引优化等),可能需要手动编写迁移脚本。

结构体标签和反射

  • 结构体标签:了解 Go 中标签的语法和使用场景,特别是如何利用标签为字段添加元信息。

    • 概念:在 Go 中,你可以在结构体字段后面加上反引号(```)内的标签,这些标签是一些字符串,用来存储额外的信息。
    • 用途:
      • 用于告诉 GORM 如何将这个字段映射到数据库中的列,比如指定列名、数据类型、约束条件等。
      • 也常见于 JSON 序列化,告诉程序如何将字段转换为 JSON 格式。
    type User struct {
      Name  string `gorm:"column:user_name;type:varchar(100);not null" json:"name"`
      Email string `gorm:"unique;not null" json:"email"`
    }
    // Name 字段在数据库中将映射为 user_name 列,类型为 varchar(100) 且不能为空
    // 同时在 JSON 中使用 name 作为键
    
  • 反射机制:虽然不必深入,但需要了解反射是如何在运行时读取结构体标签并据此执行操作的。

    • 反射是 Go 语言的一种特性,它允许程序在运行时检查变量的类型、结构以及标签等信息。

    • 用途:

      • GORM 就是通过反射读取结构体标签,从而了解如何把结构体字段和数据库表的列对应起来。
      • 反射可以动态地获取类型信息,使得代码更灵活,但同时也会带来一定的性能开销。
      import (
        "fmt"
        "reflect"
      )
      
      type User struct {
        Name string `gorm:"column:user_name" json:"name"`
      }
      
      func main() {
        user := User{Name: "Alice"}
        t := reflect.TypeOf(user)
        field, _ := t.FieldByName("Name")
        fmt.Println("GORM标签:", field.Tag.Get("gorm"))
        fmt.Println("JSON标签:", field.Tag.Get("json"))
      }
      
      

      这段代码利用反射获取了 User 结构体中 Name 字段的 gorm 和 json 标签信息。

time.Time 的基本用法和常见操作

GORM 会自动处理时间戳字段。

获取当前时间:now := time.Now()

// 使用 Format 方法将时间转换为字符串
formatted := now.Format("2006-01-02 15:04:05")

// 使用 time.Parse 将字符串转换为 time.Time 类型
t, err := time.Parse("2006-01-02", "2025-04-06")

// 比较时间:可以使用 Before、After、Equal 等方法比较两个时间的先后。

模型定义

模型定义

  • 映射机制:GORM 将 Go 语言中的结构体(struct)映射为数据库中的表。定义模型就是编写对应的结构体。
  • 字段类型:模型字段可以使用基本类型(如 uint、string、uint8)、指针(如 *string、*time.Time)以及特殊类型(如 sql.NullString、sql.NullTime)来处理可空值。
  • 自动管理的时间戳:如果定义了 CreatedAt 和 UpdatedAt 字段,GORM 会在创建和更新记录时自动填充当前时间。
  • 非导出字段:结构体中首字母小写的字段不会映射到数据库中。

内置模型(gorm.Model)

  • GORM 提供了预定义结构体 gorm.Model,包含了常用的字段:
    • ID(主键)
    • CreatedAt(创建时间)
    • UpdatedAt(更新时间)
    • DeletedAt(软删除字段,支持索引)
  • 嵌入 gorm.Model 可以让你快速拥有一套标准的字段。

约定与自动行为

  • 主键约定:默认使用名为 ID 的字段作为主键。

  • 表名和列名:GORM 会自动将结构体名转换为 snake_case 的复数形式(例如 User 变为表名 users),而字段名也转换为 snake_case。

  • 自动时间戳:除了自动填充 CreatedAt 与 UpdatedAt 外,还支持通过标签(如 autoCreateTime、autoUpdateTime)自定义时间精度(秒、毫秒、纳秒)。

    type User struct {
      CreatedAt time.Time // 在创建时,如果该字段值为零值,则使用当前时间填充
      UpdatedAt int       // 在创建时该字段值为零值或者在更新时,使用当前时间戳秒数填充
      Updated   int64 `gorm:"autoUpdateTime:nano"` // 使用时间戳纳秒数填充更新时间
      Updated   int64 `gorm:"autoUpdateTime:milli"` // 使用时间戳毫秒数填充更新时间
      Created   int64 `gorm:"autoCreateTime"`      // 使用时间戳秒数填充创建时间
    }
    

标签和字段配置

  • 字段级控制:使用标签可以设置字段的数据库列名、数据类型、大小、默认值以及约束(如非空、唯一、索引等)。

    type Product struct {
      ID          uint   `gorm:"primaryKey"`                                   // 主键字段
      Code        string `gorm:"column:product_code;type:varchar(100);not null;unique;index"` // 指定列名为 product_code,数据类型为 varchar(100),非空、唯一并创建索引
      Price       uint   `gorm:"default:0;not null"`                           // 默认值为 0,且不允许为空
      Description string `gorm:"type:text;default:'no description'"`           // 指定数据类型为 text,并设置默认描述
    }
    
    
    • column:将 Code 字段映射到数据库的 product_code 列。
    • type:设置数据库中的数据类型。
    • not null、unique、index:添加非空、唯一和索引约束。
    • default:指定默认值。
  • 权限控制:标签还支持配置字段在 CRUD 操作中的读写权限(例如只创建、只更新或完全忽略)。

    type User struct {
      Name string `gorm:"<-:create"` // 允许读和创建
      Name string `gorm:"<-:update"` // 允许读和更新
      Name string `gorm:"<-"`        // 允许读和写(创建和更新)
      Name string `gorm:"<-:false"`  // 允许读,禁止写
      Name string `gorm:"->"`        // 只读(除非有自定义配置,否则禁止写)
      Name string `gorm:"->;<-:create"` // 允许读和写
      Name string `gorm:"->:false;<-:create"` // 仅创建(禁止从 db 读)
      Name string `gorm:"-"`  // 通过 struct 读写会忽略该字段
      Name string `gorm:"-:all"`        // 通过 struct 读写、迁移会忽略该字段
      Name string `gorm:"-:migration"`  // 通过 struct 迁移会忽略该字段
    }
    
    • 理解箭头方向

      • <- 表示写入(写操作)

        数据从外部传入数据库时走 <-。(意味着在写入操作(无论创建或更新)时允许该字段参与。)

      • -> 表示读取(读操作)

        数据从数据库中输出时走 ->。(意味着在读取操作时允许该字段参与。)

    • 后缀部分(如 :create、:update、false)用于进一步限制操作时机:

      • <-[操作] 限定写入操作
        • <-:create:仅在创建时写入,更新时不允许写入。
        • <-:update:仅在更新时写入,创建时不允许写入。
        • <-:创建和更新都允许写入。
        • <-:false:禁止写入,相当于只读。
      • >[操作] 限定读取操作
        • >:只允许读取(写入禁止)。
        • >:false:禁止读取(但可能允许写入,具体配合 <- 说明)。
    • 组合写法

      • >;<-:create:读取始终允许,但写入仅在创建时允许;更新时不能写。
      • >:false;<-:create:禁止从数据库中读取(>:false),但在创建时可以写入。
    • 忽略字段的写法

      • "-":完全忽略该字段,既不读也不写。
      • "-:all":在所有操作(读、写、迁移)中都忽略。
      • "-:migration":仅在迁移操作时忽略该字段。
  • 嵌入结构体:通过匿名嵌入或使用 embedded 标签,可以将一个结构体的字段直接嵌入到父结构体中,并且可以用 embeddedPrefix 添加前缀。

    type Address struct {
      City  string
      State string
    }
    
    type Customer struct {
      ID   uint   `gorm:"primaryKey"`
      Name string
      
      // 匿名嵌入 Address 结构体,其字段会直接映射到 Customer 表中
      Address
      
      // 使用 embedded 标签嵌入 Address 结构体,并添加前缀 contact_
      Contact Address `gorm:"embedded;embeddedPrefix:contact_"`
    }
    
    

高级选项

  • 除了基础的映射和约定,GORM 允许使用序列化标签(serializer)来自定义数据的存储和读取方式,增强灵活性。
  • 对于字段更新的细粒度控制,如仅更新非零值字段、使用 map 或结构体进行批量更新,均由标签和方法调用来实现。
基于多传感器融合的智身四足机器狗楼梯环境SLAM系统设计与实现 本文设计了一种基于多传感器融合的四足机器狗楼梯环境SLAM系统。系统采用Jetson Orin NX为主控制器,集成RealSense D435i深度相机和Livox Mid360激光雷达,在ROS2框架下实现平面定位精度<5cm、楼梯环境下导航不漂移的目标。通过多层次传感器融合策略、运动学约束优化和状态切换机制,解决了楼梯环境下的定位累积误差问题,实现了平面与楼梯环境的自动识别切换及精度复位功能。硬件设计注重传感器布局优化和精确标定,软件架构采用分层设计,确保实时性能。该系统为四足机器人在复杂地形中 阅读详情

相关推荐

TwinCAT3 Modbus-TCP Client/Server使用

/起始地址是12289//起始地址是12294。

panjinliang066333的博客 7732

Gorm之模型定义

模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成例如: 约定 GORM 倾向于约定,而不是配置。默认情况下,GORM 使用 作为主键,使用结构体名的 作为表名,字段名的 作为列名,并使用 、 字段追踪创建、更新时间遵循 GORM 已有的约定,可以减少您的配置和代码量。如果约定不符合您的需求,GORM 允许您自定义配置它们GORM 定义一个 结构体,其包括字段 、、、 您可以将它嵌入到您的结构体中,以包含这几个字段,详情

qq_53267860的博客 629

在 Windows 上使用 Anaconda 创建 配置 YOLOv8虚拟环境,并更改 pip 源以及以 可编辑模式 安装ultralytics

前往 NVIDIA cuDNN 下载页面,下载与您安装的 CUDA 版本匹配的 cuDNN 版本。:根据您的系统和 CUDA 版本,选择适当的 whl 文件。如下12.7,表示最高可装12.7版本CUDA,与上图中的支持的最高cuda版本一致。,无需重新安装,从而大幅提升开发效率,适用于项目开发、调试或依赖本地未发布的版本时使用,但需确保当前目录包含。:访问 NVIDIA 官方网站,下载与您的显卡和操作系统兼容的 CUDA 版本。首先,确保NVIDIA 显卡支持 CUDA,并安装相应版本的驱动程序。

weixin_44115575的博客 1891

【GORM框架】模型定义超详解,确定不来看看?

在使用ORM工具时,需要在代码中定义模型(Model)将其和数据库中的数据表(table)进行映射。在GORM中,模型可以是以下几种结构体基本go类型go类型变量指针实现或者的接口(interface)

Yaoyao2024的博客 1536

Linux环境下离线升级GCC-9.4.0的完整实践指南

本文详细介绍了在Linux环境下离线升级GCC-9.4.0的完整实践指南,包括准备工作、依赖库安装、编译配置及常见问题解决。特别适用于企业内网或安全要求严格的服务器环境,帮助开发者高效完成GCC离线升级,提升编译性能并支持现代编程语言特性。

weixin_29288313的博客 670

利用ORCAD/pspice 仿真分析电路的幅度相位谱

利用ORCAD的pspice仿真分析电路的相位谱1.介绍2.搭建电路原理图3.建立仿真文件,进行交流分析4.仿真、查看输出5.总结 1.介绍 orcad配合pspice一直是电路原理图绘制和仿真的主要工具,pspice工具提供了诸如暂态分析、直流分析、交流分析等多个工具。学校主要教的是multisim,对orcad讲得很少,最进要利用orcad对运放构成的电路的频响、相移特性进行分析,发现资料幅度...

qq_40011737的博客 1万+

gorm使用之各种表关系实例-主外键->struct

这个功能还是很有用的,例如你的文章表 可能叫ArticleModel,你的标签表可能叫TagModel那么按照gorm默认的主键名,那就分别是ArticleModelID,TagModelID,太长了,根本就不实用这个地方,官网给的例子看着也比较迷,不过我已经跑通了主要是要修改这两项joinForeignKey 连接的主键idJoinReferences 关联的主键idID uintID uint。

qq_42901723的博客 791

强化学习 | Multi Agents | Trust Region | HATRPO | HAPPO

ICLR2022多智能体论文,将trust region推广到MA上,保证单调递增。学习博客,共7k字,纯手敲。含大量手写笔记。

111辄的博客 1万+

GORM通过struct查询字段的零值

当通过struct进行查询的时候,GORM 将会查询这些字段的非零值, 意味着你的字段包含0, ' ',false或者其他将不会出现在查询语句中。

m0_71149992的博客 1056

提示词编写:从新手到专家的进阶之路

本文旨在为提示词编写者提供一条从新手到专家的进阶之路。我们将详细探讨提示词编写的背景与意义、基础与进阶技巧、实战应用以及最佳实践。通过逐步深入的分析与实操,读者将掌握提示词编写的核心要点,提高编写效率和作品质量。提示词是用于引导人工智能生成文本的关键词或短语,它包含了作者想要传达的主题、情感和细节。随着人工智能技术的普及,自动化写作工具逐渐应用于各行各业。为了提高写作效率,项目团队决定开发一款基于人工智能的自动化写作工具。成功开发了一款自动化写作工具,生成文本质量较高。

AI天才研究院 1085

SAP UI5 OData V4 操作结果访问:从 getObject 到返回值上下文与 $$inheritExpandSelect

SAP UI5 OData V4 操作结果获取指南 摘要:在 SAP UI5 OData V4 模型中,操作结果需通过绑定上下文获取而非直接从 invoke() 返回。本文详解核心要点: 数据获取路径 使用 invoke() 发起请求后,通过 getBoundContext().getObject() 获取结果 特定场景下 invoke() 可能返回返回值上下文(如草稿切换) 关键实践技巧 使用 $$inheritExpandSelect 继承字段选择,避免二次读取 对象页应用中,通过替换绑定上下文实现无缝

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 310

GORM_模型定义

GORM_模型定义

lisus2007的专栏 1001

YOLO11实战优化:暗光环境检测 | 引入Retinex增强模块与YOLO11联合训练,解决夜间/低照度场景抓拍痛点

本文探讨了暗光环境下目标检测的技术挑战与解决方案。研究发现,传统CNN模型在低照度条件下性能显著下降,主要由于光子数减少导致信噪比降低、目标特征被噪声淹没。针对这一问题,文章提出将可微分光照增强模块嵌入YOLO检测器的技术路线,重点分析了Retinexformer+YOLO11联合方案的优势。 文章对比了YOLO系列模型在暗光场景的表现,指出YOLO11凭借其C3k2模块、无锚检测头和多任务统一骨干网络,在低对比度图像特征提取方面优于前代产品。同时详细介绍了Retinexformer的理论基础和技术创新,包

2601_95807009的博客 205

gorm模型定义

模型是标准的 struct,由 Go 的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成例如:}

weixin_54046648的博客 826

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Gorm模型定义

模型(orm gorm) 1.从数据库读取的数据会先保存到预先定义的模型对象,然后我们就可以从模型对象得到我们想要的数据。 2.插入数据到数据库也是先新建一个模型对象,然后把想要保存的数据先保存到模型对象,然后把模型对象保存到数据库。 gorm模型定义是通过struct实现的,这样我们就可以通过gorm库实现struct类型和mysql表数据的映射。 gorm负责将对模型的读写操作翻译成sql语句,然后gorm再把数据库执行sql语句后返回的结果转化为我们定义的模型对象。 gorm模型定义 gorm模型定

qq_41891425的博客 806

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

GoRM 模型定义

模型定义模型定义约定gorm.Model高级选项字段级权限控制创建/更新时间追踪(纳秒、毫秒、秒、Time)嵌入结构体字段标签关联标签 模型定义 模型就是标准的 struct ,由 Go 的基本数据类型,实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成,例如: type User struct { ID uint Name string Email *string Age uint8 Birt

artisticbones的博客 734

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

GORM模型(Model)定义

在使用ORM工具时,通常我们需要在代码中定义模型(Models)与数据库中的数据表进行映射,在GORM中模型(Models)通常是正常定义的结构体、基本的go类型或它们的指针。 同时也支持sql.Scanner及driver.Valuer接口(interfaces)。 GORM 倾向于约定,而不是配置。默认情况下,GORM 使用ID作为主键,使用结构体名的蛇形复数作为表名,字段名的蛇形作为列名,并使用CreatedAt、UpdatedAt字段追踪创建、更新时间 遵循 GORM 已有的约定...

jiangshanghe的博客 5602

【gorm】3.gorm模型定义

模型定义用作于数据库数据转换和自动建表Notes: 如果修改了表的tag标签需要删除表重新进行自动迁移才会生效 Step 2: 向结构体中添加方法TableName Note: 在模型定义中defaultTableName为模型的默认表名,在开发工程中,可以在TableName方法中可以使用方式来指定标注是否是系统表,同时也可以使用下面这种方式来为表添加前缀: 但是要是同时使用了以上两种方式来更改表名的情况下,向结构体中添加方法TableName的方法优先级更高 4. gorm.Model 在上述自定

weixin_48294669的博客 1006

gorm模型定义原理借鉴分析

说明 python有元类概念,在定义db模型时,相当方便,极大简化代码 go中没有元类概念, gorm有模型定义,看看它怎么实现,能否借鉴 gorm原理 gorm运用了结构体标签,通过reflect获取标签内容,这是基本原理,这里不做介绍。 关注它如何运用这些特性,是否可以借鉴使用 直接分析源码太复杂,绕的路径太多。基于gorm模型定义最核心的代码,写一个小例子,展示gorm的用法,这也是我需要借鉴的地方 gorm所有的接口db.Create, db.Model,…最终都是调用schema.

妙音 893

Go学习笔记:GORM-模型定义

假设有一个商品表`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID,商品Id',`name` varchar(30) NOT NULL COMMENT '商品名',`price` decimal(10,2) unsigned NOT NULL COMMENT '商品价格',`type_id` int(10) unsigned NOT NULL COMMENT '商品类型Id',

weixin_47113960的博客 1124

Golang GORM系列:定义GORM模型及关系指南

在应用程序中高效管理数据库的关键是在GORM中定义模型。通过创建模型之间的关系、用相关标记注释字段以及构建有组织的结构模型,你为平滑的数据库交互构建了坚实的基础。GORM中的一对一、一对多和多对多关系处理使您能够轻松地为复杂的数据情况建模。结构良好的基础会产生可伸缩和可维护的应用程序,使你的数据库管理之旅变得简单而富有成效。

neweastsun的专栏 1405

Golang GORM 模型定义 结构标签、gorm.Model

模型一般都是普通的 Golang 的结构体,Go的基本数据类型,或者指针。模型是标准的struct,由Go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成(创建一个结构体可以将其变为一张表)定义一张表:常识:小写属性是不会生成字段的id这里其实就是一个主键,主键就是可以自增并且不能重复。

小楼一夜听春雨,深巷明朝卖杏花 1414

go 学习之 GORM模型定义,连接Mysql数据库

GORM模型定义 ORM框架操作数据库都需要预先定义模型,模型可以理解成数据模型,作为操作数据库的媒介。例如: 从数据库读取的数据会先保存到预先定义的模型对象,然后我们就可以从模型对象得到我们想要的数据。 插入数据到数据库也是先新建一个模型对象,然后把想要保存的数据先保存到模型对象,然后把模型对象保存到数据库。 在golang中gorm模型定义是通过struct实现的,这样我们就可以通过gorm库实现struct类型和mysql表数据的映射。 gorm模型定义主要就是在struct类型定义的基础上增

youandme520的专栏 2877

在 GORM 中定义模型

本文深入探讨了在 GORM 中打造有效模型的艺术,探讨如何创建结构化的 Go 结构体,使用标签注释字段,以及建立模型之间的关联,以充分发挥您的应用程序数据库交互的潜力。

csjds的专栏 444

Gorm 数据库表迁移与表模型定义

因为这里我们是测试学习使用,单独安装MySQL 比较费时费力,所以这里使用Docker方便快速掌握Gorm 相关知识。【一文搞定】Linux、Mac、Windows安装Docker与配置教程!下载镜像::将容器的 3306 端口映射到主机的 3306 端口:将主机当前目录下的挂载到容器的:将主机当前目录下的logs目录挂载到容器的/logs:将主机当前目录下的data目录挂载到容器的 /mysql_data:初始化root用户的密码docker ps。

淘小欣的博客 1830

Gorm介绍、数据库连接与模型定义

GORM是使用Go语言开发的友好的ORM库。中文官方网站全功能 ORM关联 (拥有一个,拥有多个,属于,多对多,多态,单表继承)Create,Save,Update,Delete,Find 中钩子方法支持 Preload、Joins 的预加载事务,嵌套事务,Save Point,Rollback To to Saved PointContext、预编译模式、DryRun 模式。

liu289747235的专栏 3018
上一篇: 【LeetCode】二叉树的递归遍历
下一篇: 【Gorm】连接到数据库
Pyroyster
博客等级 码龄7年 206粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值