亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Golang初始化MySQL數(shù)據(jù)庫(kù)方法淺析

 更新時(shí)間:2023年05月19日 09:26:37   作者:三杯溫開(kāi)水  
這篇文章主要介紹了Golang初始化MySQL數(shù)據(jù)庫(kù)的方法,數(shù)據(jù)庫(kù)的建立第一步即要初始化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧

安裝依賴

主要這邊還需要安裝兩個(gè)依賴,gorm、viper ,具體的可以訪問(wèn)他們的官網(wǎng)(Gorm官網(wǎng)地址 Viper Github地址)

初始化配置

在根目錄下打開(kāi)終端執(zhí)行:

go mod init 項(xiàng)目名稱 (例如: go mod init demo )

安裝依賴

go get github.com/jinzhu/gorm 或 go get -u gorm.io/gorm

go get -u gorm.io/driver/mysql

go get github.com/spf13/viper

創(chuàng)建文件

創(chuàng)建一個(gè)yml文件(application.yml)

#server:
#  post: 8888
datasource:
  driverName: mysql
  host: # 端口地址
  port: # 端口號(hào)
  database: # 數(shù)據(jù)庫(kù)名稱
  username: # 賬號(hào)
  password: # 密碼
  charset: utf8

在目錄下創(chuàng)建一個(gè)common包,包下再創(chuàng)建一個(gè)database.go文件,內(nèi)部寫(xiě)一個(gè)初始化數(shù)據(jù)庫(kù),建議拆分出來(lái),這樣拼接的方式有利于項(xiàng)目在不同環(huán)境下進(jìn)行快速的更改配置。

package common
import (
	"fmt"
	// 看清楚引入包,包的差異存在方法差異
	"github.com/jinzhu/gorm" 
	"github.com/spf13/viper"
)
// 用大寫(xiě)聲明(可以全局訪問(wèn))
var DB *gorm.DB
// 創(chuàng)建數(shù)據(jù)庫(kù)連接池
func InitDB() *gorm.DB {
	driverName := viper.GetString("datasource.driverName")
	host := viper.GetString("datasource.host")
	port := viper.GetString("datasource.port")
	database := viper.GetString("datasource.database")
	username := viper.GetString("datasource.username")
	password := viper.GetString("datasource.password")
	charset := viper.GetString("datasource.charset")
	args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
		username,
		password,
		host,
		port,
		database,
		charset)
	db, err := gorm.Open(driverName, args)
	if err != nil {
		fmt.Println("fail err mysql", err.Error())
	}
	// gorm 自動(dòng)創(chuàng)建表,需要放入model層中的模型,比如 User{}
	db.AutoMigrate(User{})
	// 進(jìn)行賦值 否則會(huì)空指針
	DB = db
	return db
}
// 獲取DB的示例
func GetDB() *gorm.DB {
	return DB
}

main函數(shù)執(zhí)行

在根目錄下創(chuàng)建一個(gè)main文件(唯一),在這個(gè)環(huán)境我們需要做做一個(gè)初始化配置文件的操作,在main中優(yōu)先加載這個(gè)config,然后才是初始化數(shù)據(jù)庫(kù),順序不能錯(cuò)哈,因?yàn)閿?shù)據(jù)庫(kù)的連接信息在yml文件中,所以不要將順序搞錯(cuò)。

package main
import (
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
	"github.com/spf13/viper"
	"go-gin-vue/common"
	"os"
)
func main() {
	InitConfig()
	// 嘗試連接數(shù)據(jù)庫(kù)
	db := common.InitDB()
	// 延遲關(guān)閉
	defer db.Close()
	r := gin.Default()
	// 加載路由
	r = CollectRouter(r)
	// 監(jiān)聽(tīng)的端口
	// 可以在yml中定義server端口并且使用yml文件中定義的端口
	// port := viper.GetString("server.port") 
	if port != "" {
		panic(r.Run(":" + port))
	}
	r.Run(":9000") // 測(cè)試端口 9000 上啟動(dòng)服務(wù)
}
// 初始化config文件
func InitConfig() {
	workDir, _ := os.Getwd()
	// 讀取的文件名
	viper.SetConfigName("application")
	// 讀取的文件類型
	viper.SetConfigType("yml")
	// 讀取的路徑
	viper.AddConfigPath(workDir + "/config")
	err := viper.ReadInConfig()
	if err != nil {
		panic("")
	}
}

到此這篇關(guān)于Golang初始化數(shù)據(jù)庫(kù)方法淺析的文章就介紹到這了,更多相關(guān)Go初始化數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang迭代如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解

    Golang迭代如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解

    這篇文章主要為大家介紹了Golang迭代之如何在Go中循環(huán)數(shù)據(jù)結(jié)構(gòu)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 淺析Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作

    淺析Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作

    這篇文章主要為大家詳細(xì)介紹了Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作,文中的示例代碼講解詳細(xì),對(duì)我們深入了解Go語(yǔ)言有一定的幫助,需要的可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • Golang 類型轉(zhuǎn)換的實(shí)現(xiàn)(斷言、強(qiáng)制、顯式類型)

    Golang 類型轉(zhuǎn)換的實(shí)現(xiàn)(斷言、強(qiáng)制、顯式類型)

    將一個(gè)值從一種類型轉(zhuǎn)換到另一種類型,便發(fā)生了類型轉(zhuǎn)換,在go可以分為斷言、強(qiáng)制、顯式類型轉(zhuǎn)換,本文就詳細(xì)的介紹一下這就幾種轉(zhuǎn)換方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Golang中常見(jiàn)的三種并發(fā)控制方式使用小結(jié)

    Golang中常見(jiàn)的三種并發(fā)控制方式使用小結(jié)

    這篇文章主要為大家詳細(xì)介紹了如何對(duì)goroutine并發(fā)行為的控制,在Go中最常見(jiàn)的有三種方式:sync.WaitGroup、channel和Context,下面我們就來(lái)看看他們的具體使用吧
    2024-01-01
  • Go語(yǔ)言中排序的3種實(shí)現(xiàn)方法

    Go語(yǔ)言中排序的3種實(shí)現(xiàn)方法

    在寫(xiě)代碼過(guò)程中,排序是經(jīng)常會(huì)遇到的需求,這篇文章主要為大家介紹三種常用的方法,文中的示例代碼簡(jiǎn)潔易懂,需要的小伙伴可以參考下
    2023-08-08
  • Golang性能優(yōu)化的技巧分享

    Golang性能優(yōu)化的技巧分享

    性能優(yōu)化的前提是滿足正確可靠、簡(jiǎn)潔清晰等質(zhì)量因素,針對(duì)?Go語(yǔ)言特性,本文為大家整理了一些Go語(yǔ)言相關(guān)的性能優(yōu)化建議,感興趣的可以了解一下
    2023-07-07
  • Go語(yǔ)言操作Excel利器之excelize類庫(kù)詳解

    Go語(yǔ)言操作Excel利器之excelize類庫(kù)詳解

    Excelize是Go語(yǔ)言編寫(xiě)的用于操作Office Excel文檔基礎(chǔ)庫(kù),基于ECMA-376,ISO/IEC 29500國(guó)際標(biāo)準(zhǔn),可以使用它來(lái)讀取、寫(xiě)入由Excel 2007及以上版本創(chuàng)建的電子表格文檔,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言操作Excel利器之excelize類庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • go語(yǔ)言中函數(shù)與方法介紹

    go語(yǔ)言中函數(shù)與方法介紹

    這篇文章介紹了go語(yǔ)言中的函數(shù)與方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 使用go gin來(lái)操作cookie的講解

    使用go gin來(lái)操作cookie的講解

    今天小編就為大家分享一篇關(guān)于使用go gin來(lái)操作cookie的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • Golang 經(jīng)典校驗(yàn)庫(kù) validator 用法解析

    Golang 經(jīng)典校驗(yàn)庫(kù) validator 用法解析

    這篇文章主要為大家介紹了Golang 經(jīng)典校驗(yàn)庫(kù) validator 用法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論