## 鏈接示例
```go
// 第一種, 單一數據庫鏈接
var config = &gorose.Config{Driver:"sqlite3",Dsn:"./db.sqlite",Prefix:"pre_",SetMaxOpenConns:200,SetMaxIdleConns:10}
engin,err := gorose.Open(config)
// 第二種, 讀寫分離集群
var config1 = gorose.Config{Dsn: "./db.sqlite"}
var config2 = gorose.Config{Dsn: "./db2.sqlite"}
var config3 = gorose.Config{Dsn: "./db3.sqlite"}
var config4 = gorose.Config{Dsn: "./db4.sqlite"}
var configCluster = &gorose.ConfigCluster{
Master: []gorose.Config{config3, config4},
Slave: []gorose.Config{config1, config2},
Driver: "sqlite3",
}
engin,err := gorose.Open(configCluster)
```
配置支持2種方式, 原生dsn, 單一數據庫, 數據庫讀寫分離集群
> mysql連接示例: `engin, err = gorose.Open(&gorose.Config{Driver: "mysql", Dsn: "root:root@tcp(localhost:3306)/test?charset=utf8&parseTime=true"})`
## 配置類型詳解
```go
// 單一數據庫配置
type Config struct {
Driver string // 驅動: mysql/sqlite3/oracle/mssql/postgres/clickhouse, 如果集群配置了驅動, 這里可以省略
Dsn string // 數據庫鏈接
SetMaxOpenConns int // (連接池)最大打開的連接數,默認值為0表示不限制
SetMaxIdleConns int // (連接池)閑置的連接數, 默認0
Prefix string // 表前綴, 如果集群配置了前綴, 這里可以省略
}
// 數據庫讀寫分離集群配置
type ConfigCluster struct {
Master []Config // 主數據庫集群
Slave []Config // 從數據庫集群
Driver string // 驅動
Prefix string // 前綴
}
```
如果集群配置了`driver`, 則單一配置不需要添加driver, 默認讀取集群配置的driver
如果集群配置了`Prefix`, 則單一配置不需要添加Prefix, 默認讀取集群配置的Prefix
`SetMaxOpenConns`: 連接池最大連接數,不設置, 默認無限
`SetMaxIdleConns`: 連接池最大空閑連接數,不設置, 默認無
## 如何使用json,toml,ini等配置
json示例
```go
// json配置字符串
var jsonstr = `{"driver":"sqlite3","dsn":"/tmp/db.sqlite3"}`
// 解析json的struct
type jsonObj struct {
Driver string `json:"driver"`
Dsn string `json:"dsn"`
}
var js jsonObj
// 解析json到js對象
json.Unmarshal([]byte(jsonstr), &js)
// 組合config
var config = gorose.Config{Driver:js.Driver, Dsn:js.Dsn}
// 初始化鏈接數據庫
engin,err := gorose.Oper(config)
// ping測試數據庫連通性
fmt.Println(engin.Ping())
```
toml, ini等配置, 皆類似