初始化实现
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# mysqlx Examples
|
||||
|
||||
本目录提供了 `mysqlx` SDK 的多种配置使用示例,按场景拆分到独立子目录:
|
||||
|
||||
- `basic_dsn/`:通过原始 DSN 字符串创建客户端。
|
||||
- `expanded_dsn/`:通过 `WithDSNConfig` 及单个字段展开设置连接信息。
|
||||
- `custom_dialector/`:使用自定义 `gorm.Dialector`(例如 SQLite 内存数据库)创建客户端。
|
||||
- `advanced_options/`:演示 GORM 高级配置与连接池选项,如 `NamingStrategy`、`SkipDefaultTransaction`、`DisableForeignKeyConstraintWhenMigrating` 等。
|
||||
|
||||
## 运行示例
|
||||
|
||||
示例目录下每个文件可单独执行:
|
||||
|
||||
```bash
|
||||
cd c:/Code/pkg/mysqlx
|
||||
go run ./example/basic_dsn/basic_dsn.go
|
||||
```
|
||||
|
||||
```bash
|
||||
go run ./example/expanded_dsn/expanded_dsn.go
|
||||
```
|
||||
|
||||
```bash
|
||||
go run ./example/custom_dialector/custom_dialector.go
|
||||
```
|
||||
|
||||
```bash
|
||||
go run ./example/advanced_options/gorm_advanced_options.go
|
||||
```
|
||||
|
||||
也可以运行整个 `example` 目录里的单个子目录或文件。
|
||||
@@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"code.yun.ink/pkg/mysqlx"
|
||||
"gorm.io/gorm/logger"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
func main() {
|
||||
client, err := mysqlx.NewDB(
|
||||
mysqlx.WithDSN("user:password@tcp(127.0.0.1:3306)/testdb?parseTime=true&loc=Local"),
|
||||
mysqlx.WithLogger(logger.Default.LogMode(logger.Info)),
|
||||
mysqlx.WithNamingStrategy(schema.NamingStrategy{SingularTable: true}),
|
||||
mysqlx.WithDisableForeignKeyConstraintWhenMigrating(true),
|
||||
mysqlx.WithSkipDefaultTransaction(true),
|
||||
mysqlx.WithConnectionPool(5, 20, 15*time.Minute, time.Hour),
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to create mysqlx client: %v", err)
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
fmt.Println("MySQL client created with advanced GORM and connection pool options")
|
||||
_ = client
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"code.yun.ink/pkg/mysqlx"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
client, err := mysqlx.NewDB(
|
||||
mysqlx.WithDSN("user:password@tcp(127.0.0.1:3306)/testdb?parseTime=true&loc=Local"),
|
||||
mysqlx.WithLogger(logger.Default.LogMode(logger.Info)),
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to create mysqlx client: %v", err)
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
fmt.Println("MySQL client created with raw DSN")
|
||||
_ = client
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"code.yun.ink/pkg/mysqlx"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
client, err := mysqlx.NewDB(
|
||||
mysqlx.WithDialector(sqlite.Open("file::memory:?cache=shared")),
|
||||
mysqlx.WithLogger(logger.Default.LogMode(logger.Info)),
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to create mysqlx client with custom dialector: %v", err)
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
fmt.Println("MySQL SDK client created with custom Dialector")
|
||||
_ = client
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"code.yun.ink/pkg/mysqlx"
|
||||
"github.com/go-sql-driver/mysql"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
cfg := mysql.NewConfig()
|
||||
cfg.User = "testuser"
|
||||
cfg.Passwd = "password"
|
||||
cfg.Net = "tcp"
|
||||
cfg.Addr = "127.0.0.1:3306"
|
||||
cfg.DBName = "testdb"
|
||||
cfg.ParseTime = true
|
||||
cfg.Loc = time.Local
|
||||
cfg.Params = map[string]string{
|
||||
"charset": "utf8mb4",
|
||||
}
|
||||
|
||||
client, err := mysqlx.NewDB(
|
||||
mysqlx.WithDSNConfig(cfg),
|
||||
mysqlx.WithDSNTimeout(5*time.Second),
|
||||
mysqlx.WithDSNReadTimeout(10*time.Second),
|
||||
mysqlx.WithDSNWriteTimeout(10*time.Second),
|
||||
mysqlx.WithDSNParams(map[string]string{"multiStatements": "true"}),
|
||||
mysqlx.WithLogger(logger.Default.LogMode(logger.Warn)),
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to create mysqlx client: %v", err)
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
fmt.Println("MySQL client created with expanded DSN configuration")
|
||||
_ = client
|
||||
}
|
||||
Reference in New Issue
Block a user