最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. 更新日志

1.1. v1.0

1.1.1. 破壞性變更

  • gorm.Open返回類(lèi)型為*gorm.DB而不是gorm.DB
  • 更新只會(huì)更新更改的字段

大多數(shù)應(yīng)用程序不會(huì)受到影響,只有當(dāng)您更改回調(diào)中的更新值(如BeforeSaveBeforeUpdate)時(shí),應(yīng)該使用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  // 不工作,更新時(shí)不會(huì)包括EncryptedPassword字段
  }
}

軟刪除的默認(rèn)查詢(xún)作用域只會(huì)檢查deleted_at IS NULL

之前它會(huì)檢查deleted_at小于0001-01-02也排除空白時(shí)間,如:

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

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

SELECT * FROM users WHERE deleted_at IS NULL

所以如果你使用gorm.Model,那么你是好的,沒(méi)有什么需要改變,只要確保所有記錄的空白時(shí)間為deleted_at設(shè)置為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的名稱(chēng)轉(zhuǎn)換為db名稱(chēng)之前,只有那些來(lái)自golint的常見(jiàn)初始化(如HTTP,URI)是特殊處理的。

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

錯(cuò)誤RecordNotFound已重命名為ErrRecordNotFound

mssql驅(qū)動(dòng)程序已從默認(rèn)驅(qū)動(dòng)程序中刪除,

導(dǎo)入它用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示例詳解的詳細(xì)內(nèi)容,更多關(guān)于golang gorm更新日志執(zhí)行SQL的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang 文件操作:刪除指定的文件方式

    Golang 文件操作:刪除指定的文件方式

    這篇文章主要介紹了Golang 文件操作:刪除指定的文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Golang三個(gè)編譯基本命令的使用小結(jié)

    Golang三個(gè)編譯基本命令的使用小結(jié)

    本文主要介紹了Golang三個(gè)編譯基本命令的使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Go語(yǔ)言使用組合的思想實(shí)現(xiàn)繼承

    Go語(yǔ)言使用組合的思想實(shí)現(xiàn)繼承

    這篇文章主要為大家詳細(xì)介紹了在 Go 里面如何使用組合的思想實(shí)現(xiàn)“繼承”,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以了解一下
    2022-12-12
  • 如何使用golang實(shí)現(xiàn)traceroute

    如何使用golang實(shí)現(xiàn)traceroute

    這篇文章主要介紹了如何使用golang實(shí)現(xiàn)traceroute,該工具在linux環(huán)境下的命令是traceroute或者tracepath,在windows下命令是tracert,本文給大家詳細(xì)講解需要的朋友可以參考下
    2023-04-04
  • Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程

    Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程

    Gogland 是 JetBrains 公司推出的Go語(yǔ)言集成開(kāi)發(fā)環(huán)境。這篇文章主要介紹了Go 語(yǔ)言 IDE 中的 VSCode 配置使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Go Gin框架中的binding驗(yàn)證器使用小結(jié)

    Go Gin框架中的binding驗(yàn)證器使用小結(jié)

    Gin框架中的binding驗(yàn)證器為我們提供了簡(jiǎn)便的數(shù)據(jù)綁定和驗(yàn)證功能,通過(guò)合理使用binding和validate標(biāo)簽,我們可以確保API接口的數(shù)據(jù)合法性和完整性,這篇文章主要介紹了Go Gin框架中的binding驗(yàn)證器使用指南,需要的朋友可以參考下
    2024-07-07
  • Go Context庫(kù) 使用基本示例

    Go Context庫(kù) 使用基本示例

    在Go的http包中,每個(gè)請(qǐng)求由獨(dú)立的goroutine處理,這些goroutine可能需要訪問(wèn)請(qǐng)求特定的數(shù)據(jù)或啟動(dòng)其他服務(wù),Context在Go語(yǔ)言中提供了一種方式來(lái)傳遞請(qǐng)求域的數(shù)據(jù)、取消信號(hào)和截止時(shí)間,本文介紹Go Context庫(kù) 使用基本示例,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • golang 40行代碼實(shí)現(xiàn)通用協(xié)程池

    golang 40行代碼實(shí)現(xiàn)通用協(xié)程池

    golang協(xié)程機(jī)制很方便的解決了并發(fā)編程的問(wèn)題,但是協(xié)程并不是沒(méi)有開(kāi)銷(xiāo)的,所以也需要適當(dāng)限制一下數(shù)量。這篇文章主要介紹了golang 40行代碼實(shí)現(xiàn)通用協(xié)程池,需要的朋友可以參考下
    2018-08-08
  • grpool?goroutine池協(xié)程管理

    grpool?goroutine池協(xié)程管理

    這篇文章主要介紹了grpool?goroutine池協(xié)程管理,goroutine協(xié)程非常輕量級(jí),這也是為什么go支持高并發(fā),但是goroutine頻繁創(chuàng)建銷(xiāo)毀對(duì)GC的壓力比較大,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-06-06
  • golang通過(guò)http訪問(wèn)外部網(wǎng)址的操作方法

    golang通過(guò)http訪問(wèn)外部網(wǎng)址的操作方法

    這篇文章主要介紹了golang通過(guò)http訪問(wèn)外部網(wǎng)址的操作方法,分為?get方式訪問(wèn)外部的接口,Post方式請(qǐng)求外部接口,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02

最新評(píng)論

中宁县| 红河县| 甘孜县| 福鼎市| 调兵山市| 铁岭县| 凌海市| 大庆市| 永新县| 高平市| 德州市| 隆林| 郁南县| 历史| 庆安县| 大同县| 和顺县| 周至县| 郎溪县| 甘德县| 巴青县| 大余县| 北流市| 东海县| 长宁区| 惠州市| 宜兰市| 泰宁县| 襄樊市| 玉溪市| 花莲市| 卢龙县| 许昌县| 富阳市| 体育| 当雄县| 桂东县| 鄂托克旗| 利津县| 绥中县| 城步|