golang:beego的简单介绍和TiDB数据库的客户端实现

查阅官方文档和源码可以知道,beego库中有一个orm包负责数据库接口的封装。这个包支持若干个数据库引擎:

golang:beego的简单介绍和TiDB数据库的客户端实现_第1张图片

看到了一个文档,对ORM(Object-Relational Mapping)这个东西解释得比较清楚:
golang:beego的简单介绍和TiDB数据库的客户端实现_第2张图片

具体的客户端实现见下:

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参数应该如何填写。

可以参考这里。

你可能感兴趣的:(golang,beego,tidb)