中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中使用gorm小結

發布時間:2020-10-08 20:19:29 來源:腳本之家 閱讀:250 作者:daisy 欄目:編程語言

首先說明的是,在項目中使用orm的好處很多:

  1. 防止直接拼接sql語句引入sql注入漏洞
  2. 方便對modle進行統一管理
  3. 專注業務,加速開發

壞處也是顯而易見的:

  1. 開發者與最終的sql語句隔了一層orm,因此可能會不慎引入爛sql
  2. 依賴于orm的成熟度,無法進行一些「復雜」的查詢。當然,復雜的查詢一大半都是應該從設計上規避的

留意不合法的時間值

MySQLDATE/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=utf8&parseTime=true&loc=Local")

parseTime=true&loc=Local說明會解析時間,時區是機器的local時區。機器之間的時區可能不一致會設置有問題,這導致從相同庫的不同實例查詢出來的結果可能解析以后就不一樣。因此推薦將loc統一設置為一個時區,如parseTime=true&loc=America%2FChicago

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永靖县| 德清县| 莎车县| 武义县| 阿拉善左旗| 洞头县| 宕昌县| 德格县| 驻马店市| 阿拉善盟| 共和县| 东光县| 海丰县| 商都县| 隆回县| 新源县| 兰西县| 会昌县| 洪湖市| 兴仁县| 周至县| 壶关县| 梅河口市| 德化县| 石首市| 饶平县| 钟山县| 改则县| 岑溪市| 烟台市| 阿尔山市| 吴江市| 沙田区| 岑巩县| 潜山县| 图木舒克市| 黄大仙区| 浏阳市| 孙吴县| 电白县| 龙胜|