[Go][ORM]Gorm

小黑
發佈於後端
閱讀時間約 3 分鐘

Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。

特點

  • 全功能ORM
  • 支持連結
  • 支援Hook
  • 支持預先載入
  • 支援交易
  • 支持復合主鍵
  • 支持SQL生成器
  • 支援資料庫自動遷移
  • 支援自訂日誌
  • 可擴充性
  • 所有功能都被測試覆蓋


安裝

go get -u gorm.io/gorm


使用

資料庫連接

package main

import (
_ "github.com/go-sql-driver/mysql"
"gorm.io/gorm"
)

func main() {
db, err := gorm.Open("mysql", "root:root@(127.0.0.1:3306)/db1?" +
"charset=utf8mb4&parseTime=True&loc=Local")
if err!= nil{
panic(err)
}
defer db.Close()
db.DB().SetMaxIdleConns(10)
db.DB().SetMaxOpenConns(100)
}

SetMaxIdleConns:閒置時最大連接數。

SetMaxOpenConns:最大連接數。


建表

定義好結構後,用db.AutoMigrate(),就會自動創建。


插入

GormUser := GormUser{
Phone: "0987654321",
Name: "xxx",
Password: md5Password("333333"), //使用者密碼
}
db.Save(&GormUser) //儲存到資料庫


刪除

var GormUser = new(GormUser)
db.Where("phone = ?", "0987654321").Delete(&GormUser)


查詢

var GormUser = new(GormUser)
db.Where("phone = ?", "0987654321").Find(&GormUser)
fmt.Println(GormUser)


更新

var GormUser = new(GormUser)
err:=db.Model(&GormUser).Where("phone = ?", "0987654321").
Update("phone", "0987666666").Error
if err !=nil {
//......
}


交易處理

tx := db.Begin()
GormUser := GormUser{
Phone: "0987654321",
Name: "xxx",
Password: md5Password("333333"), //使用者密碼
}
if err := tx.Create(&GormUser).Error; err != nil {
//復原
tx.Rollback()
fmt.Println(err)
}
db.First(&GormUser, "phone = ?", "0987654321")
//提交​
tx.Commit()


日誌

db.LogMode(true)
db.SetLogger(log.New(os.Stdout, "\r\n", 0))


7會員
112內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
[Go]多通道監聽器
閱讀時間約 2 分鐘
[Go]產生亂數
閱讀時間約 1 分鐘
[Go]網頁爬蟲
閱讀時間約 3 分鐘
[Go]OAuth2.0
閱讀時間約 9 分鐘
[Docker]Docker-Compose
閱讀時間約 3 分鐘
[Go]環境架設
閱讀時間約 1 分鐘
你可能也想看
創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
Thumbnail
avatar
黑貓老師
2024-06-29
Go Stronger新賽季新希望,每隻球隊都有自己的中心思想、歡呼口號、應援歌曲,然而不變的最終目標就是贏得年度總冠軍,在那之前所能做的、就是全力以赴,永不退縮。
Thumbnail
avatar
布魯斯的運動心理世界
2024-04-20
【Go】學習資源紀錄:Ultimate Go Programming(Ardan Labs)原本的計畫是寫系列文,一天嗑一點,雖然完整影片約17小時,分批消化卻花了我近10天,現在回去看我第一天寫的草稿,編輯時間已經是半年前...。
avatar
2024-04-04
Go Ready Love.親了,然後呢? 過了一兩分鐘姐姐似乎是回神過來,丟下一句妳先不要下車,接著關上我這邊的車門,回到駕駛座,我內心的OS:完了完了巴比Q了༼⁠⁰⁠o⁠⁰⁠;⁠༽ 「明天早上幾點來接妳?」 我???(⁠ʘ⁠ᗩ⁠ʘ) 「妳的機車不是停在公司那?親了我後就忘了?」 『不麻煩主管了,我可以搭計程車或者我
avatar
Kusanan Kaoru
2024-03-20
GO知識+Rt7集訓班 (1) 事前準備今年FGO台服終於預計在年底進入2-7,又常常看到很多人說對中南美洲文化不熟, 因此想再把文章統整成一下成更適合作為遊戲補充資料的版本,希望大家在到時遊玩2-7時有更多樂趣。 第一篇基本上是以基礎知識為主,不太會有遊戲劇透。
Thumbnail
avatar
Sade海星
2024-03-01
「GO START」- 從《UX in the Jungle》談人人適用的專案管理心法(下)之前已經與大家談過讓我第一次挑戰就成功設計出有趣桌遊教具的「GO START」專案管理心法當中的 G、O、S,現在就來繼續分享 T、A、R、T。請容我再次強調,這是人人都適用的專案管理心法,上下兩篇一起看完後,你就會發現要掌握專案管理的要點沒有想像中那麼困難。
Thumbnail
avatar
林德政(DJ)
2024-01-28
「GO START」- 從《UX in the Jungle》談人人適用的專案管理心法(上)與大家分享我第一次挑戰就成功設計出有趣桌遊教具的「GO START」專案管理心法。這篇先介紹心法當中的 G、O、S,下一篇會繼續分享 T、A、R、T。這是人人都適用的專案管理心法,上下兩篇一起看完後,你就會發現要掌握專案管理的要點沒有想像中那麼困難。
Thumbnail
avatar
林德政(DJ)
2024-01-21
GO喝著shot,苦辣嗆辣令眼淚噴出變得很合理,乾杯這苦悶的日子。 她豪邁的大腿一開坐著喝shot,崇拜過像霹靂嬌娃那樣來個霹靂腿一掃的快感。 這裡不是皇后區,只有跟她從來不熟的算數公式與做人的外星球,又是苦悶的一天過去,她懷念著跳著舞的快樂就那樣子一直跳!跳!跳!哈哈哈的過了每一天的有她存在的意義
avatar
巧克力
2023-10-31
go1111
avatar
xiaoxue lee
2022-02-24
avatar
神勇火球
2008-08-03
avatar
神勇火球
2007-01-09