栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

GORM的简单理解

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GORM的简单理解

        1、GORM是一种对象关系映射ORM框架,数据表对应结构体,数据行对应结构体实例,数据库字段对应结构体字段。

在gorm中,表名默认就是结构体名称的复数,也可以通过方法或者db.Table("表名")自定义表名;

列名由两个单词组成,在数据库中默认转小写后用下划线链接;

如果结构体有ID字段则默认ID字段为主键。

        2、另外,GORM内置了一个gorm.Model结构体。gorm.Model是一个包含了ID, CreatedAt, UpdatedAt, DeletedAt四个字段的Golang结构体,可以将其嵌入到自己的结构体中。(如果模型内置了gorm.model有DeletedAt字段,则调用Delete删除该记录时,将会设置DeletedAt字段为当前时间,而不是直接将记录从数据库中删除,即软删除)

        3、gorm中支持的结构体tag:
Type    指定列数据类型
Size    指定列大小, 默认值255
PRIMARY_KEY    将列指定为主键
UNIQUE    将列指定为唯一
NOT NULL    将列指定为非 NULL
Column    指定列名
default  设置默认值

        4、例子:

查询

db.Select("name, age").Order("age desc").Limit(3).Find(&user, "name = ?", "jinzhu")
db.Select("name, age").Order("age desc").Limit(3).Where("name = ?","jinzhu").Find(&users)

修改
// 根据给定的条件更新单个属性
db.Model(&user).Where("active = ?", true).Update("name", "hello")
// 使用 map 更新多个属性,只会更新其中有变化的属性
db.Model(&user).Updates(map[string]interface{}{"name": "hello", "age": 18, "active": false})
// 使用 struct 更新多个属性,只会更新其中有变化且为非零值的字段
db.Model(&user).Updates(User{Name: "hello", Age: 18})

如果你想更新或忽略某些字段,你可以使用 Select,Omit

删除
db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})
db.Delete(Email{}, "email LIKE ?", "%jinzhu%")

        在 GORM 中使用多个立即执行方法时,后一个立即执行方法会复用前一个立即执行方法的条件 (不包括内联条件,find中写的条件) 。立即执行方法是指那些会立即生成SQL语句并发送到数据库的方法,一般是CRUD方法,如:Create, First, Find, Take, Save, UpdateXXX, Delete, Scan, Row, Rows…


5、db.debug  可以返回查询的sql语句

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945213.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号