构建beego Web 项目
首先构建一个beego 的web 项目,这个我们完全可以参考beego 官网中的开发文档,上面介绍的非常的详细,在这我就不给大家介绍,主要是介绍ORM 的CRUP 的操作;这是beego 的官网 https://beego.me/docs/intro/
CRUP 操作
使用的ORM 的操作,大致步骤是首先创建 数据库的实例,Model实体,控制器 ,还有View 视图;我的实例中使用的是MySQL 数据库;所用应用的数据库驱动也是MySQL 的。
代码块
第一: 数据库实例
package models
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func init() {
mysqluser := beego.AppConfig.String("mysqluser")
mysqlpass := beego.AppConfig.String("mysqlpass")
mysqlurls := beego.AppConfig.String("mysqlurls")
mysqldb := beego.AppConfig.String("mysqldb")
orm.RegisterModel(new(DbBrand), new(DbProduct))
orm.RegisterDriver("mysql", orm.DRMySQL)
orm.RegisterDataBase("default", "mysql", mysqluser+":"+mysqlpass+"@tcp("+mysqlurls+")/"+mysqldb+"?charset=utf8&loc=Asia%2FShanghai")
orm.RunSyncdb("default", false, true)
if beego.AppConfig.String("runmode") == "dev" {
orm.Debug = true
}
}
第二:实体,下面我是创建了两个实体,这个两个实体是有关系,但是在实例中并没有使用它们的关系进行数据库的操作,这个后续为大家补上的。 有关创建model 实体的关系,在beego 开发文档说明的很清楚了我就不这里解析了。
Brand 实体
package models import ( "time" "github.com/astaxie/beego/orm" ) type DbBrand struct { BrandID int64 `orm:"auto;pk;column(BrandID);" json:"BrandID"` BrandName string `orm:"size(100);column(BrandName);"json:"BrandName"` SortID int64 `orm:"column(SortID)"` Memo string `orm:"size(500);column(Memo);"` CreateTime time.Time `orm:"auto_now;type(datetime);column(CreateTime)"` Product []*DbProduct `orm:"reverse(many)"` } func (b *DbBrand) TableName() string { return "_Brand" } func (b *DbBrand) Query() orm.QuerySeter { return orm.NewOrm().QueryTable(b) } func (b *DbBrand) Insert() (int64, error) { return orm.NewOrm().Insert(b) } func (b *DbBrand) Delete() (int64, error) { num, err := orm.NewOrm().Delete(b) if err != nil { return 0, err } return num, nil } func (b *DbBrand) Update(fields ...string) error { _, err := orm.NewOrm().Update(b, fields...) if err != nil { return err } return nil } func (b *DbBrand) Read(fields ...string) error { err := orm.NewOrm().Read(b, fields...) if err != nil { return err } return nil }