Skip to content

gorm使用 #10

Open
Open
@x893675

Description

@x893675

orm优点:

  • 防止直接拼接sql语句引入sql注入漏洞
  • 方便对modle进行统一管理
  • 专注业务,加速开发

缺点:

  • 开发者与最终的sql语句隔了一层orm,因此可能会不慎引入烂sql
  • 依赖于orm的成熟度,无法进行一些「复杂」的查询。当然,复杂的查询一大半都是应该从设计上规避的

留意不合法的时间值

MySQL的DATE/DATATIME类型可以对应Golang的time.Time。但是,如果DATE/DATATIME不慎插入了一个无效值,例如2016-00-00 00:00:00, 那么这条记录是无法查询出来的。会返回gorm.RecordNotFound类型错误。零值0000-00-00 00:00:00是有效值,不影响正常查询。

留意tag sql:"default:null"

gorm对各种tag的支持非常完善。但是有些行为跟直觉不太一致,需要注意。当对某字段设置tagsql:"default:null"时,你想通过update设置该字段为null就不可能了,只能通过raw sql。这是gorm设计的取向问题。

如何通过gorm设置字段为null值

gorm给出了两种方法,以string为例:

在golang中,声明该字段为*string
使用sql.NullString类型

db连接时可以更改时区

Metadata

Metadata

Assignees

No one assigned

    Labels

    golanggo programer language

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions