文档章节

gorm笔记

吾爱
 吾爱
发布于 2017/10/19 16:29
字数 294
阅读 147
收藏 1
Go

感觉gorm文档还是太简单了,一些坑需要自己踩到再看源码才知道。

错误处理

不管什么操作,不要使用原始的DB对象获取错误,因为操作内部实际上是生成了一个新的DB对象并返回。

下面的用法是错误的:

var DB *gorm.DB
//.....
DB.Create(&user)
if DB.Error != nil {
    panic(DB.Error)
}

正确的方法:

var DB *gorm.DB
//.....

if newdb := DB.Create(&user);newdb.Error != nil {
    panic(newdb.Error)
}

除了Create,其他方法也一样的处理方式,可以简化一些:

if err := DB.Create(&user).Error;err != nil {
    panic(err)
}

对于查询操作,找不到结果也是一种错误,所以需要判断一下

if d := DB.First(&user);d.Error != nil {
    if false == d.RecordNotFound() {
        panic(d.Error)
    }
}

链式调用

基本上每个链式方法如:Where,Find,Limit等,都会返回一个新的DB对象,所以拆开调用的时候一定要注意替换原对象指针,举个例子:

user := User{}
model := db.Model(&user)
if typeName := c.DefaultQuery("type_name","");typeName != "" {
    model.Where("type_name = ?",typeName)
}
model.Find(&user)

这样写,where条件是没有用的,因为where方法会克隆出一个新的对象,正确的写法:

user := User{}
model := db.Model(&user)
if typeName := c.DefaultQuery("type_name","");typeName != "" {
    model = model.Where("type_name = ?",typeName)
}
model.Find(&user)

© 著作权归作者所有

吾爱
粉丝 142
博文 272
码字总数 91680
作品 0
后端工程师
私信 提问
加载中

评论(0)

Go组件学习——gorm四步带你搞定DB增删改查

1、简介 ORM Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作。 gorm gor...

Jackie_Zheng
2019/08/04
0
0
Grails 1.2参考文档速读系列

一个很好的Grails中文参考资料。 Grails 1.2参考文档速读(1):第1、2章 Grails 1.2参考文档速读(2):配置基础和环境 Grails 1.2参考文档速读(3):日志配置 Grails 1.2参考文档速读(4...

groovyland
2010/02/25
369
1
gorm文档

gorm官方文档 gorm官方示例

huzorro
2016/12/10
4
0
zorm 1.3.1 发布,Golang 轻量级 ORM

zorm,golang 轻量级 ORM,readygo子项目 源码地址:https://gitee.com/chunanyong/zorm go get gitee.com/chunanyong/zorm 基于原生sql语句编写,是springrain的精简和优化. 自带代码生成器 ...

光石头
04/05
803
0
Golang 入门系列(十二)如何使用ORM框架gorm

之前在已经介绍了用的go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章https://www.cnblogs.com/zhangweizhong/category/1275863.html。 实际上,为提高开发效率,一般都会使用...

章为忠
03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Apache Tomcat 8 ARM 移植

tomcat 下载地址 https://tomcat.apache.org/download-80.cgi

osc_y08db3kb
28分钟前
32
0
splunk日志搜索语法笔记

点击右上方的setting,进入edit alert页面可以配置一些日志显示和预警方式,如下图 在搜索框中可以输入多种搜索条件来查找日志记录 全文搜索 搜索框直接输入”搜索词“   ERROR 查找匹配词”...

KaWaE
28分钟前
15
0
开发APP、小程序怎么选择云主机的配置

在云服务器的运用上,不仅可以节省高昂的硬件采购成本以及人力成本,后期需要更高配置的云主机时,也可以进行升级,以此减少过高的运维成本,那么开发APP、小程序怎么选择云主机的配置? 内存...

Cloudam云端
29分钟前
18
0
手把手教你开发docker一样的命令行

目录 前言 一、安装 二、初始化应用 初始化项目 创建入口文件cmd/root.go 创建主程序main.go 三、如何自定义命令 创建hello子命令 创建version子命令 四、如何设置flag选项 全局选项 本地选项...

osc_b9r67jnt
30分钟前
25
0
[PHP] 解决mysql下1366 Incorrect string value错误

这个错误是字符编码的问题 , 因为内容里有可能有表情等特殊字符 , 需要使用utf8mb4编码 重点还有一个是 , 在php代码中连接上mysql后一定要执行一下 set name utf8mb4 否则也是不行的 比如下面...

osc_kvlhvh2u
31分钟前
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部