91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

南昌县| 固原市| 溆浦县| 宾川县| 宝兴县| 陆川县| 全州县| 六安市| 汝城县| 运城市| 高雄市| 宁安市| 揭西县| 宜兰市| 巴马| 宁明县| 丹凤县| 崇礼县| 孙吴县| 巴塘县| 德昌县| 中方县| 黎川县| 江山市| 辉南县| SHOW| 惠水县| 柳江县| 外汇| 洛浦县| 成都市| 依安县| 攀枝花市| 北碚区| 巍山| 九江市| 江安县| 迁西县| 界首市| 平原县| 剑阁县|