Go语言中使用gorm小结-创新互联
首先说明的是,在项目中使用orm的好处很多:
目前创新互联公司已为1000多家的企业提供了网站建设、域名、网页空间、网站托管维护、企业网站设计、临潭网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。- 防止直接拼接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是有效值,不影响正常查询。
留意tagsql:"default:null"
gorm对各种tag的支持非常完善。但是有些行为跟直觉不太一致,需要注意。当对某字段设置tagsql:"default:null"
时,你想通过update
设置该字段为null
就不可能了,只能通过raw sql
。这是gorm设计的取向问题。
如何通过gorm设置字段为null值
字段允许为null
值肯定是设计存在问题。但是,往往前人埋下的坑需要你去填。gorm作者给出了两种方法,以string
为例:
在golang中,声明该字段为*string
使用sql.NullString
类型
推荐使用后者。
留意连接串中的loc
例如通过如下连接串打开mysql连接:
复制代码 代码如下:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:Go语言中使用gorm小结-创新互联
文章地址:http://myzitong.com/article/ddojic.html