李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
GO
正文
03.Beego框架快速入门
Leefs
2022-07-30 AM
981℃
0条
[TOC] ### 前言 本篇通过一个简单的查询示例,演示整个Beego框架的使用。 + 代码编辑工具:`Goland` **需求** > 连接MySQL数据库,通过GET请求,传入id值查询出对应学生信息 ### 一、控制器逻辑 + 在controllers目录下创建`GoDemoController.go`文件 ```go package controllers import ( "github.com/astaxie/beego" "go_project/models" ) //定义一个控制器结构体 //一般一个模块定义一个控制器 type GoDemoController struct { //嵌套beego基础控制器,在go语言中嵌套struct,就类似继承的概念 //这里就相当于,继承了beego.Controller的方法和属性 beego.Controller } //覆盖beego.Controller的Get方法,用于处理RESTful请求中的get请求 // beego.Controller默认支持多种RESTful方法,例如:Post、Put、Delete等等 func (c *GoDemoController) Get() { //Data是继承过来的属性,是map类型,可以保存任意类型数据,主要用于保存请求响应数据 //可以通过Data将参数,传入视图模板文件 c.Data["title"] = "学生信息统计" // 设置需要渲染的模板文件,框架会去views目录查找这个模板文件 c.TplName = "student.tpl" } ``` ### 二、设置Url路由 + 在routers包下的`init()`函数中设置访问路由 ```go package routers import ( "go_project/controllers" "github.com/astaxie/beego" ) // go 包初始化函数,go语言中在导入一个包的时候,如果被导入包存在init函数,会执行init函数 // 因此这里可以使用init函数初始化路由设置 func init() { beego.Router("/", &controllers.MainController{}) // 使用beego.Router函数,注册路由规则。 // 第一个参数是url路由,第二个参数是控制器 // 这里的意思就是将访问 /student 这个url的请求,交给controllers.GoDemoController控制器处理。 beego.Router("/student",&controllers.GoDemoController{}) } ``` 通过在浏览器访问`http://127.0.0.1:8080/student`地址,进入到`GoDemoController`控制器的Get()方法 **路由规则说明** `beego RESTful`路由规则,默认是通过 **请求方法** 确认由哪个控制器方法执行,例如get请求,由Get方法执行,POST请求由Post方法执行。 ### 三、编写model逻辑 #### 3.1 定义表结构 + **创建表** ```sql CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID自增', `name` varchar(255) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `stu_class` int(11) DEFAULT NULL COMMENT '年级', `address` varchar(255) DEFAULT NULL COMMENT '家庭住址', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; ``` 在MySQL数据库中执行创建语句创建该表。 + **表中添加数据** ```sql INSERT INTO `student` VALUES (1, '张三', 12, 6, '北京朝阳'); INSERT INTO `student` VALUES (2, '李四', 11, 5, '北京海淀'); ``` #### 3.2 初始化数据库连接 一般初始化数据库连接都是在`main.go`入口的地方设置一次。 ```go package main import ( "github.com/astaxie/beego/orm" _ "go_project/routers" "github.com/astaxie/beego" //导入mysql驱动,这是必须的 _ "github.com/go-sql-driver/mysql" ) //初始化应用设置,通过init函数初始化数据库连接,go语言中这个函数会优先执行 func init() { // 这里注册一个default默认数据库,数据库驱动是mysql. // 第三个参数是数据库dsn, 配置数据库的账号密码,数据库名等参数 // dsn参数说明: // username - mysql账号 // password - mysql密码 // db_name - 数据库名 // 127.0.0.1:3306 - 数据库的地址和端口 orm.RegisterDataBase("default", "mysql", "username:password@tcp(127.0.0.1:3306)/db_name?charset=utf8") } func main() { beego.Run() } ``` 为了初始化`mysql`连接,在入口`main.go`文件,增加`init`函数初始化数据库设置。 #### 3.3 创建model 在models目录下创建文件`student.go` ```go package models import "github.com/astaxie/beego/orm" //定义Student模型,绑定student表结构,用来保存sql查询结果 //说明:结构体中属性首字母必须大写,方便进行传递 type Student struct { Id int Name string Age int32 StuClass int32 //数据库表中字段下划线会被映射成大写字母 Address string } //定义Student模型绑定哪个表 func (s *Student) TableName() string { //返回mysql表名 return "student" } //初始化函数,可以用来向orm注册model func init(){ //向orm注册Student模型 orm.RegisterModel(&Student{}) } //根据id查询学生信息 func GetStudentById(id int) * Student { if id == 0 { return nil } //创建orm对象,后面都是通过orm对象操作数据库 o := orm.NewOrm() //初始化一个Student模型对象 student := Student{} //设置查询参数 student.Id = id //调用Read方法,根据student设置的参数,查询一条记录,结果保存到student结构体变量中 //默认是根据主键进行查询 //等价sql:SELECT `id`, `name`, `age`, `stu_class`, `address` FROM `student` WHERE `id` = 1 err := o.Read(&student) //检测查询结果 if err == orm.ErrNoRows { //找不到记录 return nil } else if err == orm.ErrMissPK { //找不到主键 return nil } return &student } ``` #### 3.4 通过控制器调用model 下面修改控制器代码,`GoDemoController.go`文件中的Get()方法。 ```go func (c *GoDemoController) Get() { // 获取请求参数, 返回int类型 id, _ := c.GetInt("id") //Data是继承过来的属性,是map类型,可以保存任意类型数据,主要用于保存请求响应数据 //可以通过Data将参数,传入视图模板文件 c.Data["title"] = "学生信息统计" //调用model,根据id查询对应的学生信息 student := models.GetStudentById(id) // 然后将student数据保存到Data中, 将参数传给后面的views视图模板处理 c.Data["student"] = student // 设置需要渲染的模板文件,框架会去views目录查找这个模板文件 c.TplName = "student.tpl" } ``` ### 四、编写view视图逻辑 在views目录下创建`student.tpl`文件 ```html
Demo
{{.title}}
{{ if .student }} 用户名: {{.student.Name}}
年 龄: {{.student.Age}}
年 级: {{.student.StuClass}} 年级
地 址: {{.student.Address}}
{{else}} 查寻不到该学生 {{ end }} ``` 如果查询的学生存在,则显示对应的学生信息,否则显示查寻不到该学生。 ### 五、运行项目 #### 5.1 准备工作 运行项目之前在项目终端执行如下命令 ``` D:\Codes\goland\go_project>go mod tidy ``` #### 5.2 启动项目 在main.go文件下启动main方法 #### 5.3 访问地址链接 通过浏览器访问如下地址: ``` http://127.0.0.1:8080/student?id=1 ``` ![03.Beego框架快速入门01.jpg](https://lilinchao.com/usr/uploads/2022/07/2990332475.jpg) *附参考原文链接* *https://www.tizi365.com/archives/104.html*
标签:
Beego
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2283.html
上一篇
02.Beego框架安装详解
下一篇
04.Beego框架参数配置
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
Golang基础
序列化和反序列化
CentOS
Kibana
Flink
Flume
GET和POST
查找
Sentinel
容器深入研究
Map
Filter
SpringCloudAlibaba
工具
队列
Ubuntu
前端
Java工具类
国产数据库改造
JavaWEB项目搭建
MyBatis
Jquery
数据结构
Hive
MySQL
BurpSuite
Java编程思想
人工智能
稀疏数组
Livy
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞