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)来实现的:
而这个controller的结构为:
继承了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则是模板的名字 ,通常模板也与工程放一起的,如:
与Java对应:
工程目录结构差不多,不同的是模板渲染和controller路由:
模板渲染:Java通过ModelAndView来实现:modelandView.addOjbect(key,value)来实现,或者是直接new的时候,构造函数传入map来传值,至于控制器路由.则是交由Spring的ioc容器来实现的,通过@ComponentScan会自动的将扫描这么controller,从而实现路由
3.参数的获取
参数的获取的关键还是在于这个类必须是beego.Controller的子类才行,内部封装了多个GetXXX函数:
4.beego的orm层
采用的是bee generate 命令:自动生成代码
bee generate scaffold user -fields=“id:int64,name:string,gender:int,age:int” -driver=mysql -conn=“root:123456@tcp(127.0.0.1:3306)/go_beego_test” 这个类似于mybatis的
generate,但是不同的是这个还会生成controller
scarffold 是脚手架的意思,后面则是表名, fileds后跟着的string表示需要转换的成员及其转换后的类型
最后的结构图为:
其中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:123456@tcp(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真的是小巧玲珑