最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)

 更新時間:2022年09月23日 15:19:45   作者:幽靈霧  
很多朋友不知道如何使用Goland軟件,搭建一個ORM框架GORM,今天小編給大家分享一篇教程關(guān)于搭建Go語言的ORM框架Gorm的具體步驟(從Java到go),感興趣的朋友跟隨小編一起學(xué)習(xí)下吧

【提問】

如何使用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ù)庫的信息進行替換,如下:

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ù)啟動時就進行數(shù)據(jù)庫連接:

package main

import (
	"fullstars/src/common/db"
)

func main() {

	db.InitGormDB()

}

啟動服務(wù)后,可以看到連接成功的日志:

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 '邏輯刪除標(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會進行自動轉(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實現(xiàn)整型的二進制轉(zhuǎn)化的方法

    go實現(xiàn)整型的二進制轉(zhuǎn)化的方法

    這篇文章主要介紹了go實現(xiàn)整型的二進制轉(zhuǎn)化的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Golang實現(xiàn)http文件上傳小功能的案例

    Golang實現(xiàn)http文件上傳小功能的案例

    這篇文章主要介紹了Golang實現(xiàn)http文件上傳小功能的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Golang 中的直接依賴和間接依賴管理詳解

    Golang 中的直接依賴和間接依賴管理詳解

    在 Golang 中,依賴管理是非常重要的,直接依賴是指項目代碼中明確引用的其他包的依賴,而間接依賴是指直接依賴所引用的其他包的依賴,這篇文章主要介紹了Golang 中的直接依賴和間接依賴管理,需要的朋友可以參考下
    2023-11-11
  • Go defer與time.sleep的使用與區(qū)別

    Go defer與time.sleep的使用與區(qū)別

    本文主要介紹了Go defer與time.sleep的使用與區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Golang?手寫一個簡單的并發(fā)任務(wù)?manager

    Golang?手寫一個簡單的并發(fā)任務(wù)?manager

    這篇文章主要介紹了Golang?手寫一個簡單的并發(fā)任務(wù)?manager,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 重學(xué)Go語言之錯誤處理與異常機制詳解

    重學(xué)Go語言之錯誤處理與異常機制詳解

    Go語言的開發(fā)者顯然覺得?try-catch被濫用了,因此?Go不支持使用?try-catch語句捕獲異常處理,那么,Go語言是如何定義和處理程序的異常呢,下面我們就來看看吧
    2023-08-08
  • Golang使用Token來驗證

    Golang使用Token來驗證

    token指的是一種用于驗證用戶身份或授權(quán)訪問的憑證,本文主要介紹了Golang使用Token來驗證,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • go語言編程學(xué)習(xí)實現(xiàn)圖的廣度與深度優(yōu)先搜索

    go語言編程學(xué)習(xí)實現(xiàn)圖的廣度與深度優(yōu)先搜索

    這篇文章主要為大家介紹了go語言編程學(xué)習(xí)實現(xiàn)圖的廣度與深度優(yōu)先搜索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 一文讀懂go中semaphore(信號量)源碼

    一文讀懂go中semaphore(信號量)源碼

    這篇文章主要介紹了一文讀懂go中semaphore(信號量)源碼的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Go語言使用sort包對任意類型元素的集合進行排序的方法

    Go語言使用sort包對任意類型元素的集合進行排序的方法

    這篇文章主要介紹了Go語言使用sort包對任意類型元素的集合進行排序的方法,實例分析了sort排序所涉及的方法與相關(guān)的使用技巧,需要的朋友可以參考下
    2015-02-02

最新評論

卓尼县| 清原| 罗甸县| 莱西市| 格尔木市| 高雄县| 鄂尔多斯市| 东台市| 浙江省| 濮阳市| 宾川县| 西盟| 绍兴市| 昌宁县| 靖州| 灵丘县| 广河县| 冷水江市| 思南县| 陕西省| 盐城市| 涿鹿县| 剑川县| 祁门县| 陵水| 雷州市| 翁牛特旗| 延吉市| 三穗县| 长丰县| 山阳县| 扶沟县| 庆城县| 郸城县| 区。| 莱州市| 白银市| 迁西县| 邹平县| 西城区| 嵩明县|