日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go gorm指定别名_GORM入门指南

發(fā)布時間:2025/3/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go gorm指定别名_GORM入门指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

gorm是一個使用Go語言編寫的ORM框架。它文檔齊全,對開發(fā)者友好,支持主流數(shù)據(jù)庫。

gorm介紹

GORM?gorm.io

內(nèi)含十分齊全的中文文檔,有了它你甚至不需要再繼續(xù)向下閱讀本文。

安裝

go get -u github.com/jinzhu/gorm

連接數(shù)據(jù)庫

連接不同的數(shù)據(jù)庫都需要導(dǎo)入對應(yīng)數(shù)據(jù)的驅(qū)動程序,GORM已經(jīng)貼心的為我們包裝了一些驅(qū)動程序,只需要按如下方式導(dǎo)入需要的數(shù)據(jù)庫驅(qū)動即可

import _ "github.com/jinzhu/gorm/dialects/mysql" // import _ "github.com/jinzhu/gorm/dialects/postgres" // import _ "github.com/jinzhu/gorm/dialects/sqlite" // import _ "github.com/jinzhu/gorm/dialects/mssql"

連接MySQL

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )func main() {db, err := gorm.Open("mysql", "user:password@(localhost)/dbname?charset=utf8mb4&parseTime=True&loc=Local")defer db.Close() }

連接PostgreSQL

基本代碼同上,注意引入對應(yīng)postgres驅(qū)動并正確指定gorm.Open()參數(shù)

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/postgres" )func main() {db, err := gorm.Open("postgres", "host=myhost port=myport user=gorm dbname=gorm password=mypassword")defer db.Close() }

連接Sqlite3

基本代碼同上,注意引入對應(yīng)sqlite驅(qū)動并正確指定gorm.Open()參數(shù)

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/sqlite" )func main() {db, err := gorm.Open("sqlite3", "/tmp/gorm.db")defer db.Close() }

連接SQL Server

基本代碼同上,注意引入對應(yīng)mssql驅(qū)動并正確指定gorm.Open()參數(shù)。

import ("github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mssql" )func main() {db, err := gorm.Open("mssql", "sqlserver://username:password@localhost:1433?database=dbname")defer db.Close() }

GORM操作MySQL

package mainimport ("fmt""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql" )// UserInfo 用戶信息 type UserInfo struct {ID uintName stringGender stringHobby string }func main() {db, err := gorm.Open("mysql", "root:root1234@(127.0.0.1:13306)/db1?charset=utf8mb4&parseTime=True&loc=Local")if err!= nil{panic(err)}defer db.Close()// 自動遷移db.AutoMigrate(&UserInfo{})u1 := UserInfo{1, "七米", "男", "籃球"}u2 := UserInfo{2, "沙河娜扎", "女", "足球"}// 創(chuàng)建記錄db.Create(&u1)db.Create(&u2)// 查詢var u = new(UserInfo)db.First(u)fmt.Printf("%#vn", u)var u UserInfodb.Find(&uu, "hobby=?", "足球")fmt.Printf("%#vn", uu)// 更新db.Model(&u).Update("hobby", "雙色球")// 刪除db.Delete(&u) }

GORM Model定義

在使用ORM工具時,通常我們需要在代碼中定義模型(Models)與數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行映射,在GORM中模型(Models)通常是正常定義的結(jié)構(gòu)體、基本的go類型或它們的指針。 同時也支持sql.Scanner及driver.Valuer接口(interfaces)。

gorm.Model

為了方便模型定義,GORM內(nèi)置了一個gorm.Model結(jié)構(gòu)體。gorm.Model是一個包含了ID,CreatedAt,UpdatedAt,DeletedAt四個字段的Golang結(jié)構(gòu)體。

// gorm.Model 定義 type Model struct {ID uint `gorm:"primary_key"`CreatedAt time.TimeUpdatedAt time.TimeDeletedAt *time.Time }

你可以將它嵌入到你自己的模型中:

// 將 `ID`, `CreatedAt`, `UpdatedAt`, `DeletedAt`字段注入到`User`模型中 type User struct {gorm.ModelName string }

當(dāng)然你也可以完全自己定義模型:

// 不使用gorm.Model,自行定義模型 type User struct {ID intName string }

模型定義示例

type User struct {gorm.ModelName stringAge sql.NullInt64Birthday *time.TimeEmail string `gorm:"type:varchar(100);unique_index"`Role string `gorm:"size:255"` // 設(shè)置字段大小為255MemberNumber *string `gorm:"unique;not null"` // 設(shè)置會員號(member number)唯一并且不為空Num int `gorm:"AUTO_INCREMENT"` // 設(shè)置 num 為自增類型Address string `gorm:"index:addr"` // 給address字段創(chuàng)建名為addr的索引IgnoreMe int `gorm:"-"` // 忽略本字段 }

總結(jié)

以上是生活随笔為你收集整理的go gorm指定别名_GORM入门指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。