Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gorm使用 #10

Open
x893675 opened this issue Feb 13, 2020 · 0 comments
Open

gorm使用 #10

x893675 opened this issue Feb 13, 2020 · 0 comments
Labels
golang go programer language

Comments

@x893675
Copy link
Owner

x893675 commented Feb 13, 2020

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连接时可以更改时区

@x893675 x893675 added the golang go programer language label Feb 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
golang go programer language
Projects
None yet
Development

No branches or pull requests

1 participant