亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

golang?gorm更新日志執(zhí)行SQL示例詳解

 更新時間:2022年04月15日 17:27:53   作者:Jeff的技術(shù)棧  
這篇文章主要為大家介紹了golang?gorm更新日志執(zhí)行SQL示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

1. 更新日志

1.1. v1.0

1.1.1. 破壞性變更

  • gorm.Open返回類型為*gorm.DB而不是gorm.DB
  • 更新只會更新更改的字段

大多數(shù)應用程序不會受到影響,只有當您更改回調(diào)中的更新值(如BeforeSaveBeforeUpdate)時,應該使用scope.SetColumn,例如:

func (user *User) BeforeUpdate(scope *gorm.Scope) {
  if pw, err := bcrypt.GenerateFromPassword(user.Password, 0); err == nil {
    scope.SetColumn("EncryptedPassword", pw)
    // user.EncryptedPassword = pw  // 不工作,更新時不會包括EncryptedPassword字段
  }
}

軟刪除的默認查詢作用域只會檢查deleted_at IS NULL

之前它會檢查deleted_at小于0001-01-02也排除空白時間,如:

SELECT * FROM users WHERE deleted_at IS NULL OR deleted_at <= '0001-01-02'

但是沒有必要,如果你使用*time.Time作為模型的DeletedAt,它已經(jīng)被gorm.Model使用了,所以SQL就足夠了

SELECT * FROM users WHERE deleted_at IS NULL

所以如果你使用gorm.Model,那么你是好的,沒有什么需要改變,只要確保所有記錄的空白時間為deleted_at設置為NULL,示例遷移腳本:

import (
    "github.com/jinzhu/now"
)
func main() {
  var models = []interface{}{&User{}, &Image{}}
  for _, model := range models {
    db.Unscoped().Model(model).Where("deleted_at < ?", now.MustParse("0001-01-02")).Update("deleted_at", gorm.Expr("NULL"))
  }
}
  • 新的ToDBName邏輯

在GORM將struct,F(xiàn)ield的名稱轉(zhuǎn)換為db名稱之前,只有那些來自golint的常見初始化(如HTTP,URI)是特殊處理的。

所以字段HTTP的數(shù)據(jù)庫名稱將是http而不是h_t_t_p,但是一些其他的初始化,如SKU不在golint,它的數(shù)據(jù)庫名稱將是s_k_u,這看起來很丑陋,這個版本固定這個,任何大寫的初始化應該正確轉(zhuǎn)換。

錯誤RecordNotFound已重命名為ErrRecordNotFound

mssql驅(qū)動程序已從默認驅(qū)動程序中刪除,

導入它用import _ "github.com/jinzhu/gorm/dialects/mssql"

Hstore已移至github.com/jinzhu/gorm/dialects/postgres

gorm執(zhí)行sql

type Object interface {
  GroupOrderOpenlog() (uidList []int)
}
func (o *object) GroupOrderOpenlog() {
	type res struct {
		Uid int `json:"uid"`
	}
	var re []res
	sql:= "SELECT uid FROM order_openlog  GROUP BY uid"
	o.Db.Raw(sql).Scan(&amp;re)
	fmt.Println(re)
	for _,k :=range re{
		fmt.Println(k.Uid)
	}
}

以上就是golang gorm更新日志執(zhí)行SQL示例詳解的詳細內(nèi)容,更多關(guān)于golang gorm更新日志執(zhí)行SQL的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言interface詳解

    Go語言interface詳解

    這篇文章主要介紹了Go語言interface詳解,本文講解了什么是interface、interface類型、interface值、空interface、interface函數(shù)參數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • go-zero?組件布隆過濾器使用示例詳解

    go-zero?組件布隆過濾器使用示例詳解

    這篇文章主要為大家介紹了go-zero組件介紹之布隆過濾器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • go?generate代碼自動生成指南

    go?generate代碼自動生成指南

    這篇文章主要介紹了go?generate代碼自動生成指南,本文將探討?go?generate?命令的使用方法、原理以及一些實際應用場景,希望讀者能夠更好地理解和運用這個強大的工具
    2024-01-01
  • Go語言leetcode題解953驗證外星語詞典示例詳解

    Go語言leetcode題解953驗證外星語詞典示例詳解

    這篇文章主要為大家介紹了Go語言leetcode題解953驗證外星語詞典示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Go?中的空白標識符下劃線

    Go?中的空白標識符下劃線

    這篇文章主要介紹了Go?中的空白標識符下劃線,空白標識符是未使用的值的占位符,由下劃線(_)表示,下文對其相關(guān)介紹需要的小伙伴可以參考一下
    2022-03-03
  • go語言中http超時引發(fā)的事故解決

    go語言中http超時引發(fā)的事故解決

    我們使用的是golang標準庫的http client,對于一些http請求,我們在處理的時候,會考慮加上超時時間,如果超時可能會引起報錯,本文就記一次超時引發(fā)的事故
    2021-06-06
  • 在Go語言中實現(xiàn)DDD領(lǐng)域驅(qū)動設計實例探究

    在Go語言中實現(xiàn)DDD領(lǐng)域驅(qū)動設計實例探究

    本文將詳細探討在Go項目中實現(xiàn)DDD的核心概念、實踐方法和實例代碼,包括定義領(lǐng)域模型、創(chuàng)建倉庫、實現(xiàn)服務層和應用層,旨在提供一份全面的Go DDD實施指南
    2024-01-01
  • golang使用bcrypt包對密碼進行加密的方法實現(xiàn)

    golang使用bcrypt包對密碼進行加密的方法實現(xiàn)

    本文主要介紹了golang使用bcrypt包對密碼進行加密的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 如何判斷Golang接口是否實現(xiàn)的操作

    如何判斷Golang接口是否實現(xiàn)的操作

    這篇文章主要介紹了如何判斷Golang接口是否實現(xiàn)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang為什么要統(tǒng)一錯誤處理

    golang為什么要統(tǒng)一錯誤處理

    這篇文章主要介紹了golang為什么要統(tǒng)一錯誤處理,統(tǒng)一錯誤處理的目的是為了前端開發(fā)接收到后端的statuscode,之后便于前端邏輯上開發(fā)以及開發(fā),下文具體操作過程需要的小伙伴可以參考一下
    2022-04-04

最新評論