Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MELF晓宇
gin-start
提交
5ee3360a
G
gin-start
项目概览
MELF晓宇
/
gin-start
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-start
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5ee3360a
编写于
11月 09, 2021
作者:
MELF晓宇
🤤
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改配置文件方式为Json
上级
5e2bd9e2
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
123 addition
and
26 deletion
+123
-26
README.md
README.md
+4
-0
config/Config.go
config/Config.go
+61
-14
config/Config.json
config/Config.json
+17
-0
main.go
main.go
+8
-0
models/init.go
models/init.go
+29
-11
routers/Routers.go
routers/Routers.go
+4
-1
未找到文件。
README.md
浏览文件 @
5ee3360a
...
...
@@ -47,6 +47,10 @@ go build -o main.exe main.go
### 更新日志
### V0.0.2
-
修改配置文件方式为Json
### v 0.0.1
-
初始化项目
...
...
config/Config.go
浏览文件 @
5ee3360a
...
...
@@ -12,18 +12,65 @@
package
config
import
"time"
const
(
DbHost
=
"127.0.0.1"
// 数据库主机
DbPort
=
"3306"
// 数据库端口
DbUser
=
"root"
// 数据库用户名
DbPassword
=
"123456789"
// 数据库密码
DbName
=
"gin-start"
// 数据库名称
MaxIdleConns
=
10
// 空闲连接池中连接的最大数量
MaxOpenConns
=
100
// 打开数据库连接的最大数量
ConnMaxLifetime
=
time
.
Hour
// 连接可复用的最大时间
RouterHost
=
"0.0.0.0"
RouterPort
=
"2048"
import
(
"encoding/json"
"fmt"
"io/ioutil"
"sync"
)
type
GlobalConfig
struct
{
Database
DatabaseConfig
`json:"Database"`
Self
SelfConfig
`json:"Self"`
}
type
DatabaseConfig
struct
{
Type
string
`json:"Type"`
DbHost
string
`json:"DbHost"`
DbPort
string
`json:"DbPort"`
DbUser
string
`json:"DbUser"`
DbPassword
string
`json:"DbPassword"`
DbName
string
`json:"DbName"`
MaxIdleConns
int
`json:"MaxIdleConns"`
MaxOpenConns
int
`json:"MaxOpenConns"`
ConnMaxLifetime
int
`json:"ConnMaxLifetime"`
}
type
SelfConfig
struct
{
Host
string
`json:"RouterHost"`
Port
string
`json:"RouterPort"`
}
var
(
globalConfig
*
GlobalConfig
configMux
sync
.
RWMutex
)
func
Config
()
*
GlobalConfig
{
return
globalConfig
}
// InitConfigJson
/**
* @Description: 导入配置文件
* @param fliepath config文件的路径
* @return error 错误
*/
func
InitConfigJson
(
fliepath
string
)
error
{
var
config
GlobalConfig
file
,
err
:=
ioutil
.
ReadFile
(
fliepath
)
if
err
!=
nil
{
fmt
.
Println
(
"配置文件读取错误,找不到配置文件"
,
err
)
return
err
}
if
err
=
json
.
Unmarshal
(
file
,
&
config
);
err
!=
nil
{
fmt
.
Println
(
"配置文件读取失败"
,
err
)
return
err
}
configMux
.
Lock
()
globalConfig
=
&
config
configMux
.
Unlock
()
return
nil
}
config/Config.json
0 → 100644
浏览文件 @
5ee3360a
{
"Database"
:
{
"Type"
:
"Mysql"
,
"DbHost"
:
"127.0.0.1"
,
"DbPort"
:
"3306"
,
"DbUser"
:
"root"
,
"DbPassword"
:
"123456789"
,
"DbName"
:
"gin-start"
,
"MaxIdleConns"
:
10
,
"MaxOpenConns"
:
100
,
"ConnMaxLifetime"
:
1
},
"Self"
:
{
"RouterHost"
:
"0.0.0.0"
,
"RouterPort"
:
"2048"
}
}
\ No newline at end of file
main.go
浏览文件 @
5ee3360a
...
...
@@ -15,11 +15,19 @@ package main
import
(
"fmt"
"gin-start/config"
myDB
"gin-start/models"
"gin-start/routers"
)
func
main
()
{
//初始化配置文件
err
:=
config
.
InitConfigJson
(
"config
\\
Config.json"
)
if
err
!=
nil
{
panic
(
err
)
}
// 连接数据库
errDB
:=
myDB
.
InitDB
()
if
errDB
!=
nil
{
...
...
models/init.go
浏览文件 @
5ee3360a
...
...
@@ -17,6 +17,7 @@ import (
Config
"gin-start/config"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"time"
)
var
(
...
...
@@ -29,24 +30,41 @@ var (
* @return err 错误
*/
func
InitDB
()
(
err
error
)
{
dsn
:=
fmt
.
Sprintf
(
"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local"
,
Config
.
DbUser
,
Config
.
DbPassword
,
Config
.
DbHost
,
Config
.
DbPort
,
Config
.
DbName
,
)
fmt
.
Println
(
"连接数据库"
)
DB
,
err
=
gorm
.
Open
(
mysql
.
Open
(
dsn
),
&
gorm
.
Config
{})
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
"数据库连接失败"
)
// 获取配置文件
config
:=
Config
.
Config
()
switch
config
.
Database
.
Type
{
case
"Mysql"
:
dsn
:=
fmt
.
Sprintf
(
"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local"
,
config
.
Database
.
DbUser
,
config
.
Database
.
DbPassword
,
config
.
Database
.
DbHost
,
config
.
Database
.
DbPort
,
config
.
Database
.
DbName
,
)
fmt
.
Println
(
"连接数据库"
)
DB
,
err
=
gorm
.
Open
(
mysql
.
Open
(
dsn
),
&
gorm
.
Config
{})
if
err
!=
nil
{
fmt
.
Println
(
err
)
//fmt.Println("数据库连接失败")
panic
(
"数据库连接失败"
)
}
default
:
dsn
:=
fmt
.
Sprintf
(
"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local"
,
config
.
Database
.
DbUser
,
config
.
Database
.
DbPassword
,
config
.
Database
.
DbHost
,
config
.
Database
.
DbPort
,
config
.
Database
.
DbName
,
)
fmt
.
Println
(
"连接数据库"
)
DB
,
err
=
gorm
.
Open
(
mysql
.
Open
(
dsn
),
&
gorm
.
Config
{})
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
"数据库连接失败"
)
}
}
// 维护连接池
theDB
,
_
:=
DB
.
DB
()
// 设置空闲连接池中连接的最大数量
theDB
.
SetMaxIdleConns
(
Config
.
MaxIdleConns
)
theDB
.
SetMaxIdleConns
(
config
.
Database
.
MaxIdleConns
)
// 设置打开数据库连接的最大数量
theDB
.
SetMaxOpenConns
(
Config
.
MaxOpenConns
)
theDB
.
SetMaxOpenConns
(
config
.
Database
.
MaxOpenConns
)
// 设置了连接可复用的最大时间
theDB
.
SetConnMaxLifetime
(
Config
.
ConnMaxLifetime
)
theDB
.
SetConnMaxLifetime
(
time
.
Hour
*
time
.
Duration
(
config
.
Database
.
ConnMaxLifetime
)
)
// 自动迁移
err
=
DB
.
AutoMigrate
(
...
...
routers/Routers.go
浏览文件 @
5ee3360a
...
...
@@ -21,6 +21,9 @@ import (
)
func
Init
()
*
gin
.
Engine
{
// 获取配置文件
config
:=
Config
.
Config
()
r
:=
gin
.
Default
()
// 使用中间件
...
...
@@ -33,7 +36,7 @@ func Init() *gin.Engine {
// 配置静态文件夹路径 第一个参数是api,第二个是文件夹路径
r
.
StaticFS
(
"/static"
,
http
.
Dir
(
"./static"
))
err
:=
r
.
Run
(
fmt
.
Sprintf
(
"%s:%s"
,
Config
.
RouterHost
,
Config
.
Router
Port
))
err
:=
r
.
Run
(
fmt
.
Sprintf
(
"%s:%s"
,
config
.
Self
.
Host
,
config
.
Self
.
Port
))
if
err
!=
nil
{
log
.
Fatal
(
"初始化路由出错"
)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录