[Go][ORM]Gorm

小黑-avatar-img
發佈於後端
更新於 發佈於 閱讀時間約 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))


avatar-img
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
package main import "fmt" func randGenerator() chan int { ch := make(chan int) go func() { for { //select會嘗試執行各個case,如果都可以執行,那麼隨機選一個執行 se
package main import ( "fmt" ) func foo(i int) chan int { ch := make(chan int) go func() { ch <- i }() return ch } func main() { ch1, ch2, ch3
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
package main import "fmt" func randGenerator() chan int { ch := make(chan int) go func() { for { //select會嘗試執行各個case,如果都可以執行,那麼隨機選一個執行 se
package main import ( "fmt" ) func foo(i int) chan int { ch := make(chan int) go func() { ch <- i }() return ch } func main() { ch1, ch2, ch3
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這個資訊爆炸的時代,快速便捷地分享內容變得越來越重要。而台灣本土開發的 Mork 服務,不僅提供了簡單易用的縮網址功能,更整合了多項實用功能,讓使用者能夠更輕鬆地分享各種類型的內容。
今天我們繼續聊聊由 Vadim Borisov[1]於2023年發表的文章, 《Language Models are Realistic Tabular Data Generators》[2]。 今天我將帶你看看GReaT作為「物件導向編程 Objective-Oriented Pro
Thumbnail
Odoo ERP系統是工廠的理想選擇,為工廠繼承者提供高度客製化、使用者友善、即時資訊整合、雲端部署和持續更新的功能。本文介紹Odoo ERP系統的優勢及導入建議,並歡迎與我們預約免費30分鐘線上諮詢。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這個資訊爆炸的時代,快速便捷地分享內容變得越來越重要。而台灣本土開發的 Mork 服務,不僅提供了簡單易用的縮網址功能,更整合了多項實用功能,讓使用者能夠更輕鬆地分享各種類型的內容。
今天我們繼續聊聊由 Vadim Borisov[1]於2023年發表的文章, 《Language Models are Realistic Tabular Data Generators》[2]。 今天我將帶你看看GReaT作為「物件導向編程 Objective-Oriented Pro
Thumbnail
Odoo ERP系統是工廠的理想選擇,為工廠繼承者提供高度客製化、使用者友善、即時資訊整合、雲端部署和持續更新的功能。本文介紹Odoo ERP系統的優勢及導入建議,並歡迎與我們預約免費30分鐘線上諮詢。