⾸先说明的是,在项⽬中使⽤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\
parseTime=true&loc=Local说明会解析时间,时区是机器的local时区。机器之间的时区可能不⼀致会设置有问题,这导致从相同库
的不同实例查询出来的结果可能解析以后就不⼀样。因此推荐将loc统⼀设置为⼀个时区,如parseTime=true&loc=America%2FChicago总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。
因篇幅问题不能全部显示,请点此查看更多更全内容