搭建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、安裝對應數(shù)據(jù)庫的驅動
根據(jù)你的數(shù)據(jù)庫,在任意目錄執(zhí)行如下命令安裝驅動:
//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中內容需要根據(jù)自己數(shù)據(jù)庫的信息進行替換,如下:
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中增加對其的調用,在服務啟動時就進行數(shù)據(jù)庫連接:
package main
import (
"fullstars/src/common/db"
)
func main() {
db.InitGormDB()
}
啟動服務后,可以看到連接成功的日志:

5、編寫「數(shù)據(jù)Model」代碼
數(shù)據(jù)庫連接后,我們就對這個數(shù)據(jù)庫進行一些表映射和簡單查詢操作。
首先,看一下我們需要操作的數(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 '邏輯刪除標識', 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應與數(shù)據(jù)表一一對應,gorm會進行自動轉換映射。
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中增加對其的調用:
package main
import (
"fullstars/src/common/db"
)
func main() {
db.InitGormDB()
config.ConfigService()
}
調試啟動后,我們可以看一下變量的結果,數(shù)據(jù)已經(jīng)被查詢出來了:

到此這篇關于搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)的文章就介紹到這了,更多相關go orm框架內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

