• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go语言中使用gorm小结

    首先说明的是,在项目中使用orm的好处很多:

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

    坏处也是显而易见的:

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

    留意不合法的时间值

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

    留意tagsql:"default:null"

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

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

    字段允许为null值肯定是设计存在问题。但是,往往前人埋下的坑需要你去填。gorm作者给出了两种方法,以string为例:

    在golang中,声明该字段为*string

    使用sql.NullString类型

    推荐使用后者。

    留意连接串中的loc

    例如通过如下连接串打开mysql连接:

    复制代码 代码如下:

    db, err := gorm.Open("mysql", "db:dbadmin@tcp(127.0.0.1:3306)/foo?charset=utf8parseTime=trueloc=Local")

    parseTime=trueloc=Local说明会解析时间,时区是机器的local时区。机器之间的时区可能不一致会设置有问题,这导致从相同库的不同实例查询出来的结果可能解析以后就不一样。因此推荐将loc统一设置为一个时区,如parseTime=trueloc=America%2FChicago

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

    您可能感兴趣的文章:
    • golang gorm 结构体的表字段缺省值设置方式
    • golang gorm 操作mysql及gorm基本用法
    • gorm update传入struct对象,零值字段不更新的解决方案
    上一篇:Go语言中反射的正确使用
    下一篇:CentOS 32 bit安装golang 1.7的步骤详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Go语言中使用gorm小结 语,言中,使用,gorm,小结,