有时候代码是可需要映射到一个 map 结构, 不需要映射到一个 结构体中,可以写成如下:
在涉及并发的场景,往往需要加锁互斥,和 Java 类似, Go 中也有加行锁的方式,加 for update 即可。
一般写法如下:
示例代码:
有时候,我们需要进行简单的数据统计, 比如查询到结果有多少行,
有时候也需要分组统计行数
有时候我们会使用到数据统计的功能, 比如根据数据库字段 batch_no 进行分组,然后统计总金额,总笔数。
分组查询统计一般的写法如下:
代码示例:
一般来说,很少使用关联查询,但是如果要使用关联查询,可以如下:
Scopes 允许你指定常用的查询,可以在调用方法时引用这些查询, 也就是说,可以在查询中使用函数。
举个例子:
在这里插入图片描述
本文主要研究一下gorm的Unscoped
gorm.io/gorm@v1.20.11/chainable_api.go
gorm.io/gorm@v1.20.11/callbacks/delete.go
gorm.io/gorm@v1.20.11/soft_delete.go
gorm的Unscoped方法设置tx.Statement.Unscoped为true;针对软删除会追加SoftDeleteDeleteClause,即设置deleted_at为指定的时间戳;而callbacks的Delete方法在db.Statement.Unscoped为false的时候才追加db.Statement.Schema.DeleteClauses,而Unscoped则执行的是物理删除。
本文主要研究一下gorm的logger
gorm.io/gorm@v1.20.10/logger/logger.go
gorm.io/gorm@v1.20.10/logger/logger.go
gorm.io/gorm@v1.20.10/gorm.go
gorm.io/gorm@v1.20.10/callbacks.go
输出
gorm的logger提供了Interface接口,可以自己实现并全局设置或者在session级别设置;gorm默认的logger实现了logger.Interface接口定义的LogMode、Info、Warn、Error、Trace方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)