go项目中使用数据库的配置文件

首先在项目的根目录下创建一个config.json文件,内容如下:

{
    "database": {
        "Dialect": "mysql",
        "Database": "***", /*数据库名*/
        "User": "***",/*用户名*/
        "Password": "***",/*密码*/
        "Charset": "utf8", /*字符集 utf8 */
        "Host": "127.0.0.1", /*数据库地址*/
        "Port": 3306, /*数据库端口*/
        "MaxIdleConns": 5, /*空闲时最大的连接数*/
        "MaxOpenConns": 10 /*最大的连接数*/
    }
}

然后在根目录下创建一个config文件夹,然后创建config.go文件,内容如下:

package config

import (
	"github.com/goes/logger"
	"github.com/goes/utils"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
	"regexp"
)

var jsonData map[string]interface{}

func initJSON() {
	bytes, err := ioutil.ReadFile("./config.json")
	if err != nil {
		logger.Error("ReadFile: ", err.Error())
		os.Exit(-1)
	}
	// 去除注释
	configStr := string(bytes[:])
	reg := regexp.MustCompile(`/\*.*\*/`)

	configStr = reg.ReplaceAllString(configStr, "")
	bytes = []byte(configStr)
	if err := json.Unmarshal(bytes, &jsonData); err != nil {
		logger.Log("json parse fail", err.Error())
		os.Exit(-1)
	}
}

type dbConfig struct {
	Dialect      string
	Database     string
	User         string
	Password     string
	Charset      string
	Host         string
	Port         int
	URL          string
	MaxIdleConns int
	MaxOpenConns int
}

var DBConfig dbConfig

func initDB() {
	utils.SetObjectByJSON(&DBConfig, jsonData["database"].(map[string]interface{}))
	url := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
		DBConfig.User,
		DBConfig.Password,
		DBConfig.Host,
		DBConfig.Port,
		DBConfig.Database,
		DBConfig.Charset)
	DBConfig.URL = url
}

func init() {
	initJSON()
	initDB()
}

项目中的使用方法如下:

/**
 *	初始化启动数据库服务
 */
func init() {
	fmt.Println("数据库持久化服务器启动:")
	db, err := gorm.Open(config.DBConfig.Dialect, config.DBConfig.URL)
	if err != nil {
		fmt.Println("open db connect error.", err)
		os.Exit(-1)
	}
	db.DB().SetMaxIdleConns(config.DBConfig.MaxIdleConns)
	db.DB().SetMaxOpenConns(config.DBConfig.MaxOpenConns)
	model.DB = db
}

你可能感兴趣的:(golang)