首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go语言ORM-gorm学习笔记(一)

模型(Model)示例: type User struct { // 表名默认使用结构体名称的复数 users gorm.Model // 嵌入gorm.Model gorm.Model 是一个包含了...tag标记 column 定义字段的名称 使用tag标记 comment 定义字段注释 Age sql.NullInt64 `gorm:"comment:'年龄'"` Birthday *time.Time...Addres string `gorm:"index:addr;comment:'地址'"` // 使用tag标记 index 设置索引名为addr的普通索引 Ignore int `gorm...支持的结构体标记(Struct tags) 结构体标记(Tag) 描述 Column 指定列名 Type 指定列数据类型 Size 指定列大小,默认值255 PRIMARY_KEY 将列指定为主键 UNIQUE...,如果多个索引同名则创建复合索引 UNIQUE_INDEX 和INDEX类似,只不过创建的是唯一索引 EMBEDDED 将结构设置为嵌入 EMBEDDED_PREFIX 设置嵌入结构的前缀 - 忽略此字段

1.6K40

一文带你了解 GORM Model

GORM 默认模型GORM内置了一个gorm.Model结构体。gorm.Model是一个包含了ID, CreatedAt, UpdatedAt, DeletedAt四个字段的Golang结构体。...默认所有字段的零值, 比如 0, '', false 或者其它 零值,都不会保存到数据库内,使用指针可以避免这种情况。结构体标记(tags)使用结构体声明模型时,标记(tags)是可选项。...打标记的作用:是对数据表的字段做修饰,例如(自增,主键,大小,类型,索引........)结构体标记| 结构体标记(Tag) | 描述 |..., 如果多个索引同名则创建复合索引 || UNIQUE_INDEX | 和 INDEX 类似,只不过创建的是唯一索引 || EMBEDDED | 将结构设置为嵌入...列名约定主键GORM 默认会使用名为ID的字段作为表的主键。

74130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    GORM 的约定,您就可以少写的配置、代码。...Age int64 } 4.1.2 复合主键 通过将多个字段设为主键,以创建复合主键,例如: type Product struct { ID string `gorm...字段 // 执行删除是其实是update语句,并没有真正的删除 五、模型定义高级选项与标签 5.1 字段级权限控制 可导出的字段在使用 GORM 进行 CRUD 时拥有全部的权限,此外,GORM 允许您用标签控制字段级别的权限...GORM 支持以下 tag: tag 名大小写不敏感,但建议使用 camelCase 风格,Gorm支持以下标记: 标签名 说明 column 指定 db 列名 type 列数据类型,推荐使用兼容性好的通用类型...int'字段,它将跟踪unix秒,使用值'nano/'milli跟踪unix nano/milli秒, 如: autoUpdateTime:milli index 使用选项创建索引,对多个字段使用相同的名称创建复合索引

    43210

    组件分享之后端组件——Golang中的ORM组件gorm

    组件分享之后端组件——Golang中的ORM组件gorm 背景 近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件...组件基本信息 组件:gorm 开源协议: MIT License 使用与下载:https://gorm.io/zh_CN/ 内容 以前使用Java开发时经常使用到orm包,那在Golang中有没有合适的...本节我们就分享一个这样的组件gorm 它包含了如下内容: 全功能 ORM 关联 (拥有一个,拥有多个,属于,多对多,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方法...Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD SQL 构建器,Upsert,锁,Optimizer/Index/Comment Hint,命名参数,子查询 复合主键..."gorm.io/gorm" "gorm.io/driver/sqlite" ) type Product struct { gorm.Model Code string Price

    1.2K20

    每日一库:Gorm简介

    以下是GORM的一些主要特性: 1.全功能ORM:GORM支持全功能的ORM操作,包括关联、事务、迁移、批量插入、预加载、复合主键等。...8.日志:GORM提供了详细的日志,你可以看到每一次的数据库操作。9.扩展性:GORM提供了许多接口,你可以通过实现这些接口来扩展GORM的功能。...10.测试:GORM提供了方便的测试工具,你可以很容易地为你的代码编写测试。 以下是一些基本的GORM操作: 1....读取记录 GORM提供了多种方法来查询数据库中的记录。...删除记录 使用Delete函数可以删除数据库中的记录: db.Delete(&product, 1) 以上是GORM的基本使用方法,更多详细的信息和高级用法,可以参考GORM的官方文档:http://gorm.io

    65120

    Go(五)不知道怎么用Gorm?

    前言 所有的后端应用都离不开数据库的操作,在Go中也有一些好用的数据库操作组件,例如Gorm就是一个很不错的选择。...with Map,使用 SQL 表达式、Context Valuer 进行 CRUD SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询 复合主键...本文也不探究Gorm和其他框架的优劣比较,而是从使用者出发,一起来探讨Gorm在实际开发中的使用。...当然Gorm本身的官方文档已经非常详细了,如果对本文中的部分Gorm使用有稍许疑惑的话,请移步官方文档:https://gorm.io/zh_CN/docs/index.html 安装 在控制台执行go...标记的字段,直接删除,加了将更新deleted字段,即实现软删除 根据id进行删除 // DeleteById UPDATE `user` SET `deleted`='2021-09-26 14:29

    2.1K11

    gorm入门之概述

    GORM 指南 ? 什么是orm?简单说,ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。...概览(gorm的优点) 全功能 ORM (无限接近) 关联 (Has One, Has Many, Belongs To, Many To Many, 多态) 钩子 (在创建/保存/更新/删除/查找之前或之后...) 预加载 事务 复合主键 SQL 生成器 数据库自动迁移 自定义日志 可扩展性, 可基于 GORM 回调编写插件 所有功能都被测试覆盖 开发者友好 安装 go get -u github.com.../jinzhu/gorm 快速入门 我们以mysql为例,首先要引入mysql的驱动 _ "github.com/go-sql-driver/mysql" package models import...} // 获得MySQL的资源链接 func DB() *gorm.DB { return db } // Setup initializes the database instance func

    1.5K10

    RTMP协议视频平台EasyDSS如何通过Go语言gorm框架钩子函数精简代码?

    EasyDSS视频平台除了提供网页直播外,还可上传视频进行点播,上传视频后一键生成视频地址,以供用户分享、嵌入到网站、产品软件系统中。...因此为了精简代码,优化结构,可以使用gorm 库的hooks钩子函数功能进行优化。...gorm 为 Go 语言的数据库 orm 框架,需要在项目中创建对应的结构体,结构体如下: // 基础表 type Table struct { // id 为字符串,使用 uuid 或者 xid..." gorm:"type:datetime"` } 现在的需求是希望在创建和更新数据的时候自动更新 CreateAt 和 UpdateAt 字段,而不用每次都显示调用赋值语句。...gorm1.20.x 以上的版本中提供了 BeforeCreate、BeforeUpdate、AfterCreate 等钩子函数可以实现此功能。

    42130

    Go语言 orm库之gorm

    GORM是一个比较流行且功能齐全的orm库,主要有以下特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save...with Map,使用 SQL 表达式、Context Valuer 进行 CRUD SQL 构建器,Upsert,数据库锁,Optimizer/Index/Comment Hint,命名参数,子查询 复合主键...,索引,约束 Auto Migration 自定义 Logger 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus… 每个特性都经过了测试的重重考验...开发者友好 依赖的库 数据库转struct工具 https://github.com/xxjwxc/gormt mysql driver https://github.com/go-gorm/mysql...gorm 库 https://github.com/go-gorm/gorm 测试库 新建一个数据库testdb,建一个members表 CREATE TABLE `members` ( `id`

    1.2K20

    Gorm-使用结构体定义数据库模型

    Gorm是一个基于Golang语言的ORM库,它提供了一种简单易用的方式,帮助开发人员更轻松地管理数据库。...(100)"`}在上述示例中,我们定义了一个名为User的结构体,包含了gorm.Model,它是一个内置模型,包含了ID、CreatedAt、UpdatedAt、DeletedAt等字段。...除此之外,我们还定义了Name、Age、Email、Password等字段,其中Email字段使用了unique_index标记表示该字段为唯一约束。...这些标记可以在结构体中进行灵活配置,以满足实际需要。数据库操作在定义完模型后,我们可以使用Gorm进行数据库操作,例如创建、查询、更新和删除记录等。...以下是使用Gorm进行数据库操作的示例代码:package mainimport ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm")type

    95750

    GORM V2 自动迁移和迁移接口的方法

    01 概念 在项目开发中,我们可能会随时调整声明的模型,比如添加字段和索引,使用 GORM 的自动迁移功能,可以始终让我们的数据库表保持最新。...此外,GORM 还提供了一些迁移接口的方法,可以帮助我们方便操作数据库表、字段和索引。 02 自动迁移 AutoMigrate 用于自动迁移您的 schema,保持您的 schema 是最新的。...db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ DisableForeignKeyConstraintWhenMigrating...通过将多个字段设为主键,以达到创建复合主键,整型字段设为主键,默认为启用 AutoIncrement,如果需要禁用,使用标签autoIncrement:false。...GORM 约定使用结构体的字段名作为数据表的字段名,可以通过标签 column 修改。

    4.3K30

    Go开源ORM——GORM

    依赖安装 github.com/jinzhu/gorm 定义实体类 注意: 实体类结构体中,要映射到数据库的字段首字母必须大写,否则会被忽略 可以通过定义嵌套gorm.Model这个结构体的类型来定义实体类...,gorm.Model中定义了数据库表的一些常用基本字段 type Model struct { ID uint `gorm:"primary_key"` CreatedAt time.Time...如果创建的表已经存在,会抛出异常 比如 import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql...jinzhu"}).First(&user) //// SELECT * FROM users WHERE name "jinzhu"; Or查询 Or方法返回符合前一个查询条件或符合当前查询条件的复合条件...db.Where("name = 'jinzhu'").Or(map[string]interface{}{"name": "jinzhu 2"}).Find(&users) 查询链 多个查询条件可以直接拼接构建复合条件

    2.2K41

    Gorm 使用

    Gorm Model 定义 使用 ORM 工具,通常需要在代码中定义模型(Models)与数据库中的数据表进行映射, 在 GORM 中模型(Models)通常是正常的结构体、基本的 go 类型或他们的指针...gorm.Model 是包含了一个 ID , CreateAt, UpdateAt, DeletedAt 四个字段的 Golang 结构体 // gorm.Model 定义 type Model struct...` // 忽略本字段 } 结构体标记(tags) 使用结构体声明模型时,标记(tags)是可选项。...gorm支持以下标记: 支持结构体标记(Struct tags) ? 在这里插入图片描述 关联相关标记(tags) ?...在这里插入图片描述 主键、表名、列名的约定 主键 (Primary Key) Gorm 默认使用名为 ID 的字段作为表的主键 type User struct { ID string // 名为

    1.7K20

    Go Web编程--应用ORM

    gorm的基本用法 如何管理 ORM的使用 如何合理规划项目目录结构 安装gorm包 gorm是一个出色的,对开发人员友好的 Golang ORM 库,其支持的特性包括: 全特性 ORM (几乎包含所有特性...) 模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联) 钩子 (Before/After Create/Save/Update/Delete/Find) 预加载 事务 复合主键 SQL...规划完目录后就可以在各部分写相应的代码了,首先来看使用 gorm连接数据库。...这样对代码的管理、复用性都有帮助。 因为数据库的 CRUD 有很多种操作,本文的目的是帮助大家快速开始使用 gorm所以我就只放简单的 CRUD 做演示了。...gorm提供的功能还是很多的,每个功能在官方文档里都有讲解,我们这里就不做过多介绍了。

    1K20
    领券