beego学习

2018-11-08
14:37更:
beego的安装:采用go get 安装go get -u github.com/astaxie/beego
bee的相关命令:
bee new:新建项目结构
bee run:自动编译部署
bee generate:自动生成代码
1. beego的路由:
通过beego.Router(“url”,handler)来实现的:
beego学习
而这个controller的结构为:
beego学习
继承了beego的controller,并且重写了Get方法,这样当以get方式访问的时候就会调用这个方法
与Java对应就相当于是添加了@Controller 注解,使之成为了控制器,至于Get/Post方法对应的则是@GetMapping和@PostMapping注解
2.beego的模板渲染

func (c *MainController) Get() {
	c.Data["Website"] = "beego.me"	
	c.Data["Email"] = "[email protected]"
	c.TplName = "index.tpl"
}

渲染的方式为 c.Data[key]=value 这样前端就可以通过{{.key}}代替了
这个c继承了beego.Controller ,而c.TplName则是模板的名字 ,通常模板也与工程放一起的,如:
beego学习

与Java对应:
工程目录结构差不多,不同的丢失模板渲染和controller路由:
模板渲染:Java通过ModelAndView来实现:modelandView.addOjbect(key,value)来实现,或者是直接new的时候,构造函数传入map来传值,至于控制器路由.则是交由Spring的ioc容器来实现的,通过@ComponentScan会自动的将扫描这么controller,从而实现路由

3.参数的获取
参数的获取的关键还是在于这个类必须是beego.Controller的子类才行,内部封装了多个GetXXX函数:
beego学习

4.beego的orm层
采用的是bee generate 命令:自动生成代码
bee generate scaffold user -fields=“id:int64,name:string,gender:int,age:int” -driver=mysql -conn=“root:[email protected](127.0.0.1:3306)/go_beego_test”
scarffold 是脚手架的意思,后面则是表名, fileds后跟着的string表示需要转换的成员及其转换后的类型
最后的结构图为:
beego学习

		其中controller中的与Spring中的非常相似,只需要在配置中include这些controller即可直接访问

同时记得在main中注册数据库和让mysql init:

import (
	_ "github.com/Go-SQL-Driver/MySQL"	//前面的_表示只会执行init函数
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
)

func main() {
	orm.RegisterDriver("mysql", orm.DRMySQL)
	orm.RegisterDataBase("default", "mysql", "root:[email protected](127.0.0.1:3306/go_beego_test)") //这个用于注册数据库
	beego.Run()
}

至于contoroller:

func init() {
    //beego.Router("/", &controllers.MainController{})
    beego.Include(&controllers.UserController{})
}只需要导入即可,但是我们一般都不是这样做(应该都不是这样做,没用Go实际开发),应该是自己编写路由及其handler

beego还是跟Java的SpringMVC挺像的,就是配置没有Java那么多且复杂,Go真的是小巧玲珑