李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
GO
正文
03.Beego框架快速入门
Leefs
2022-07-30 AM
1619℃
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
NLP
4
标签云
MySQL
SpringCloudAlibaba
nginx
GET和POST
MyBatis
Tomcat
DataX
Redis
稀疏数组
排序
JavaSE
MyBatis-Plus
Azkaban
Filter
Hadoop
FastDFS
高并发
前端
Spark RDD
Spark Streaming
VUE
线程池
并发编程
Beego
数据结构和算法
持有对象
Netty
Java编程思想
Kafka
链表
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭