## 链接示例
```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等配置, 皆类似