查阅官方文档和源码可以知道,beego库中有一个orm包负责数据库接口的封装。这个包支持若干个数据库引擎:
看到了一个文档,对ORM(Object-Relational Mapping)这个东西解释得比较清楚:
具体的客户端实现见下:
package main
import (
"github.com/beego/beego/v2/client/orm"
// don't forget this
_ "github.com/go-sql-driver/mysql"
_ "github.com/mattn/go-sqlite3"
)
// User -
type User struct {
ID int `orm:"column(id)"`
Name string `orm:"column(name)"`
}
func init() {
// need to register models in init
orm.RegisterModel(new(User))
// need to register db driver
orm.RegisterDriver("mysql", orm.DRTiDB)
// need to register default database
orm.RegisterDataBase("default", "mysql", "root:@tcp(192.168.0.2:4000)/test?charset=utf8mb4&tls=false") // root:@tcp(192.168.0.2:4000)/meta?charset=utf8mb4&tls=false "root:@tcp(192.168.0.2:4000)/beego?charset=utf8mb4&tls=false"
//
}
func main() {
// automatically build table
orm.RunSyncdb("default", false, true)
// create orm object
o := orm.NewOrm()
// data
user := new(User)
user.Name = "mike"
// insert data
o.Insert(user)
// data
user = new(User)
user.Name = "niko"
// insert data
o.Insert(user)
user = new(User)
user.Name = "tsoi"
// insert data
o.Insert(user)
}
这篇文档里说,TiDB适配了MySQL接口,所以可以使用和mysql相似的方法实现连接。
另一个问题在于,orm.RegisterDataBase
方法中:
// RegisterDataBase Setting the database connect params. Use the database driver self dataSource args.
func RegisterDataBase(aliasName, driverName, dataSource string, params ...DBOption) error
datasource
参数应该如何填写。
可以参考这里。