Yiigo超好用的go开发辅助库
2019-03-01 本文已影响71人
缘来是你ylh
一直想写一些关于golang的学习文集,由于最近在整理mongodb的所以没来得及写,昨天突然发现一个超级好用的Golang 辅助库,里面将常用功能进行了封装,让golang开发变得超级简单,让新手不再害怕接触golang这门新的编程语言。发现这么好用的库当然要第一时间和大家分享了。
特点
- 支持多 MySQL 连接
- 支持多 PostgreSQL 连接
- 支持多 mongo 连接
- 支持多 redis 连接
- 支持 gomail 邮件发送
- 支持 toml 文件配置
- 采用 sqlx 处理SQL查询
- 采用 zap 日志记录
获取
go get github.com/iiinsomnia/yiigo
使用
MySQL
// default db
yiigo.RegisterDB("default", yiigo.MySQL, "root:root@tcp(localhost:3306)/test")
yiigo.DB.Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
// other db
yiigo.RegisterDB("foo", yiigo.MySQL, "root:root@tcp(localhost:3306)/test")
yiigo.UseDB("foo").Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
MongoDB
// default mongodb
yiigo.RegisterMongoDB("default", "mongodb://username:password@localhost:27017")
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
yiigo.Mongo.Database("test").Collection("numbers").InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})
// other mongodb
yiigo.RegisterMongoDB("foo", "mongodb://username:password@localhost:27017")
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
yiigo.UseMongo("foo").Database("test").Collection("numbers").InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})
Redis
// default redis
yiigo.RegisterRedis("default", "localhost:6379")
conn, err := yiigo.Redis.Get()
if err != nil {
log.Fatal(err)
}
defer yiigo.Redis.Put(conn)
conn.Do("SET", "test_key", "hello world")
// other redis
yiigo.RegisterRedis("foo", "localhost:6379")
foo := yiigo.UseRedis("foo")
conn, err := foo.Get()
if err != nil {
log.Fatal(err)
}
defer foo.Put(conn)
conn.Do("SET", "test_key", "hello world")
Config
// env.toml
//
// [app]
// env = "dev"
// debug = true
// port = 50001
yiigo.UseEnv("env.toml")
yiigo.Env.GetBool("app.debug", true)
yiigo.Env.GetInt("app.port", 12345)
yiigo.Env.GetString("app.env", "dev")
Logger
// default logger
yiigo.RegisterLogger("default", "app.log")
yiigo.Logger.Info("hello world")
// other logger
yiigo.RegisterLogger("foo", "foo.log")
yiigo.UseLogger("foo").Info("hello world")