| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package driver
-
- import (
- "fmt"
-
- _ "github.com/go-sql-driver/mysql"
- "github.com/jmoiron/sqlx"
- )
-
- type MySQLDriver struct{}
-
- func (d *MySQLDriver) Name() string {
- return "mysql"
- }
-
- func (d *MySQLDriver) BuildDSN(config DBConfig) string {
- return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
- config.Username,
- config.Password,
- config.Host,
- config.Port,
- config.Database)
- }
-
- func (d *MySQLDriver) Open(config DBConfig) (*sqlx.DB, error) {
- dsn := d.BuildDSN(config)
- db, err := sqlx.Open("mysql", dsn)
- if err != nil {
- return nil, err
- }
-
- // 使用公共的连接池配置函数
- configureConnectionPool(db, config)
-
- // 测试连接
- if err = db.Ping(); err != nil {
- return nil, err
- }
-
- return db, nil
- }
-
- func init() {
- Register(&MySQLDriver{})
- }
|