搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)
【提問】
如何使用Goland軟件,搭建一個ORM框架GORM?
【解答】
具體步驟如下:
1、檢查Go的安裝
在任意目錄執(zhí)行如下命令:
go version
若有如下返回,則安裝成功;如果報異常,則重新安裝golang
go version go1.19.1 darwin/arm64
2、安裝Gorm
在任意目錄執(zhí)行如下命令安裝grom:
go get -u gorm.io/gorm
3、安裝對應(yīng)數(shù)據(jù)庫的驅(qū)動
根據(jù)你的數(shù)據(jù)庫,在任意目錄執(zhí)行如下命令安裝驅(qū)動:
//mysql go get -u gorm.io/driver/mysql //sqlite go get -u gorm.io/driver/sqlite //sqlserver go get -u gorm.io/driver/sqlserver //clickhouse go get -u gorm.io/driver/clickhouse
4、編寫「數(shù)據(jù)庫連接」代碼
這里以連接mysql為例,在工程中創(chuàng)建用于數(shù)據(jù)庫連接的go文件,其中dsn中內(nèi)容需要根據(jù)自己數(shù)據(jù)庫的信息進(jìn)行替換,如下:
package db import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) var DB *gorm.DB func InitGormDB() (err error) { dsn := "user:pwd@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { fmt.Printf("數(shù)據(jù)庫連接失?。?v\n", err) } else { fmt.Printf("數(shù)據(jù)庫連接成功\n") DB = db } return err }
同時在main.go中增加對其的調(diào)用,在服務(wù)啟動時就進(jìn)行數(shù)據(jù)庫連接:
package main import ( "fullstars/src/common/db" ) func main() { db.InitGormDB() }
啟動服務(wù)后,可以看到連接成功的日志:
5、編寫「數(shù)據(jù)Model」代碼
數(shù)據(jù)庫連接后,我們就對這個數(shù)據(jù)庫進(jìn)行一些表映射和簡單查詢操作。
首先,看一下我們需要操作的數(shù)據(jù)庫表:
CREATE TABLE `config` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '類型', `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `value` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間', `modifytime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間', `deleteflag` tinyint(3) NOT NULL DEFAULT 0 COMMENT '邏輯刪除標(biāo)識', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
然后在工程中,新建Model文件:configModel.go,如下:
type Config struct { ID int TYPE string KEY string VALUE string CREATETIME time.Time MODIFYTIME time.Time DELETEFLAG int } func (Config) TableName() string { return "config" }
需要說明的,gorm中的Model應(yīng)與數(shù)據(jù)表一一對應(yīng),gorm會進(jìn)行自動轉(zhuǎn)換映射。
6、編寫「數(shù)據(jù)查詢」代碼
在工程中,新建文件:configService.go,用于操作數(shù)據(jù)庫和邏輯處理,如下:
其中「.Debug()」是為了在日志中打印Gorm真實拿去數(shù)據(jù)庫執(zhí)行的sql,方便我們查看和核對。
package config import ( "fullstars/src/common/db" ) func ConfigService() { var configs []Config db.DB.Debug().Find(&configs) var config Config db.DB.Debug().Where("id = ?", 2).Find(&config) }
同樣在main.go中增加對其的調(diào)用:
package main import ( "fullstars/src/common/db" ) func main() { db.InitGormDB() config.ConfigService() }
調(diào)試啟動后,我們可以看一下變量的結(jié)果,數(shù)據(jù)已經(jīng)被查詢出來了:
到此這篇關(guān)于搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)的文章就介紹到這了,更多相關(guān)go orm框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言數(shù)據(jù)結(jié)構(gòu)之插入排序示例詳解
這篇文章主要為大家介紹了Go語言數(shù)據(jù)結(jié)構(gòu)之插入排序示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08