50天精通Golang(第17天)

beego框架总结及数据库连接配置

一、beego框架总结

1.1 Beego项目组织架构

上节课程内容对beego的案例代码进行了一个简单的分析,总结一下beego项目的组织结构,总结如下:

1.1.1 项目配置:conf

项目配置文件所在的目录,项目中有一些全局的配置都可以放在此目录下。默认的app.conf文件中默认指定了三个配置:

  • appname = BeegoDemo2:** 指定项目名称。

  • httpport = 8080:** 指定项目服务监听端口。

  • runmode = dev:** 指定执行模式。

1.1.2 控制器:controllers

该目录是存放控制器文件的目录,所谓控制器就是控制应用调用哪些业务逻辑,由controllers处理完http请求以后,并负责返回给前端调用者。

1.1.3 数据层:models

models层可以解释为实体层或者数据层,在models层中实现和用户和业务数据的处理,主要和数据库表相关的一些操作会在这一目录中实现,然后将执行后的结果数据返回给controller层。比如向数据库中插入新数据,删除数据库表数据,修改某一条数据,从数据库中查询业务数据等都是在models层实现。

1.1.4 路由层:routers:

该层是路由层。所谓路由就是分发的意思,当前端浏览器进行一个http请求达到后台web项目时,必须要让程序能够根据浏览器的请求url进行不同的业务处理,从接收到前端请求到判断执行具体的业务逻辑的过程的工作,就由routers来实现。

1.1.5 静态资源目录:static

在static目录下,存放的是web项目的静态资源文件,主要有:css文件,img,js,html这几类文件。html中会存放应用的静态页面文件。

1.1.6 视图模板:views

views中存放的就是应用中存放html模版页面的目录。所谓模版,就是页面框架和布局是已经使用html写好了的,只需要在进行访问和展示时,将获取到的数据动态填充到页面中,能够提高渲染效率。因此,模版文件是非常常见的一种方式。

综上,这个整个的项目架构就是MVC的运行模式。常见的架构模式大家应该熟悉比如:MVC,MVP,MVVM等架构。这里我们采用MVC,比较清晰易懂。

1.2 beego框架路由设置

在beego框架中,支持四种路由设置,他们分别是:基础路由固定路由正则路由自动路由

1.2.1 基础路由:

直接通过beego.Get,beego.POST,beego.Head,beego.Delete等方法来进行路由的映射,我们通过代码给大家来进行演示。我们知道,常见的http请求方法操作有:GET,HEAD,PUT,POST,DELETE,OPTIONS等。

  • GET路由
    首先是基础的GET路由。下面我们通过例子来向大家进行展示。

    beego.GET("",func)
    
  • POST路由:

    beego.POST("",func)
    
  • 除此之外,还支持Patch,Head,Delete等基础路由。

以上这种请求和对应找到请求方法类型的方式就是RESTful形式,我们最常用的也是RESTful形式
RESTful是目前开发API中非常常用的一种形式,其实就是RESTful形式就是用户是get请求时就自动执行Get方法,Post请求就执行Post方法。

1.2.2 固定路由:

诸如以下此种代码形式:

beego.Router("/",controller);

Get请求就会对应到Get方法,Post就会对应到Post方法,Delete就会对应到Delete方法,Header方法就会对应Header方法。

1.2.3 正则路由:

正则路由是指可以在进行固定路由的基础上,支持匹配一定格式的正则表达式。比如:id,:username,自定义正则,file的路径和后缀切换以及全匹配等操作。

1.2.4 自定义路由

上面两种路由都是默认的根据请求的类型,Get就执行Get方法,Post执行Post方法,比较局限。因为在开发的时候大部分都是使用固定匹配想要直接执行对应的逻辑控制方法,因此beego提供给我们了可以自定义的自定义路由配置。方式如下:

beego.Router("/",&IndexController{},"")

可以用的HTTP Method:

  • “*”:包含以下所有的函数
  • “get”:GET 请求
  • “post”:POST 请求
  • “put”:PUT 请求
  • “delete”:DELETE 请求
  • “patch”:PATCH 请求
  • “options”:OPTIONS 请求
  • “head”:HEAD 请求

上面这些对应的请求方法,在beego.Controller中,定义了很多的方法,比如Init,Prepare,Post,Get,Head,Delete等方法。以上分析的是beego框架的Router以及Controller运行逻辑。

1.3 model层分析

在Web开发过程中,开发者操作数据,存储数据最常用的就是数据库操作,数据库操作是独立的一个模块,这个在后面具体的项目中会带着大家实现。

1.4 view编写

这里的实战项目静态的html模版文件以及一些其他的静态资源,是已经写好提供给开发者直接可以拿来放在项目中进行使用。在实际的开发过程中,要求大家需要掌握html,js语法以及简单的css语法要能看懂,能够时间简单的使用。更加复杂的前端页面或者静态页面,需要和前端开发人员进行对接。开发重心是在后台服务端,因此,只需要学会使用和调用调试即可。

1.5 静态文件的设置

在goweb项目中,上面说过是有一些静态资源文件的,如果用户要访问静态资源文件,我们应该也是能够访问的,这需要在我们的项目中进行静态资源设置。
设置方式为:

beego.SetStaticPath("/down1","download1")

这里的download目录是指的非goweb项目的static目录下目录,而是开发者重新新建的另外的目录。

1.6 实战项目介绍

在本系列课程中,我们一起使用Beego框架开发实现一个博客系统。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、数据库配置及连接测试

2.1 mysql数据库安装

mysql官方下载网站:https://dev.mysql.com/downloads/
我们使用的是5.7版本,下载链接:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择下载安装文件,并在本地进行安装。
安装过程中,若出现初始密码,要记住该密码,首次登陆时要使用。

【注意】windows安装说明:https://jingyan.baidu.com/article/09ea3ededa53b7c0aede39b5.html

安装完毕后,将mysql的bin目录路径添加配置到环境变量,以便能够在终端命令行中进行使用登陆mysql。

在终端中登陆mysql的命令:

mysql -u root -p

输入安装时或者自己设置的密码即可登陆成功。如下所示:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
如上图所示表示登陆成功。为了使用自己的密码,可以自己设置一个自己熟悉的密码,方便自己记忆。

2.2 mysql数据库常用命令

mysql数据库的一些命令使用:

  • 查看数据库:

    show databases;
    
  • 使用某个数据库:

    use databaseName;
    
  • 展示某个数据库表格列表:

    show tables;
    
  • mysql中的一些其他命令:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上mysql数据操作都是命令行终端形式,为了方便我们日常操作,我们可以使用图形化界面工具,在这里我们使用的是navicat工具。我们现在来看如何进行安装。

2.3 Navicat安装

navicat工具下载地址:https://www.navicat.com/en/download/navicat-for-mysql

在上面的链接中,选择自己的系统版本,然后下载安装文件,进行安装,一直默认选下一步即可,最后安装成功。

安装好了以后,在mysql数据库中创建一个新的数据库,比如名字为:myblog;创建完数据库以后,我们来看一看在beego项目中如何使用mysql数据库。

2.4 数据库驱动

我们之前给大家说过,数据库编程属于beego中的Models层,也称ORM模块。

在beego中,目前支持三种数据库驱动,分别是:

  • MySQL: github.com/go-sql-driver/mysql
  • PostgreSQL:github.com/lib/pq
  • Sqlite3:github.com/mattn/go-sqlite3

beego中的ORM所具备的几个特性:

  • 支持Go语言的所有类型存储

  • CRUD操作简单

  • 自动Join关联表

  • 允许直接使用SQL查询

2.5 beego项目中使用mysql

2.5.1 导入对应的数据库驱动

比如mysql:

import _ "github.com/go-sql-driver/mysql"

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.5.2 注册驱动,连接数据库

通过如下两句话注册数据库驱动,以及连接数据库的操作:

orm.RegisterDriver("mysql",orm.DRMySQL)
orm.RegisterDataBase(aliasName,driverName,dbConn)

详细代码如下:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.5.3 创建数据库并执行程序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

连接数据库代码如下:

package modelsimport ("github.com/astaxie/beego""github.com/astaxie/beego/orm""BlogProject/MysqlDemo/util"//切记:导入驱动包_ "github.com/go-sql-driver/mysql"
)func init() {driverName := beego.AppConfig.String("driverName")//注册数据库驱动orm.RegisterDriver(driverName, orm.DRMySQL)//数据库连接user := beego.AppConfig.String("mysqluser")pwd := beego.AppConfig.String("mysqlpwd")host := beego.AppConfig.String("host")port := beego.AppConfig.String("port")dbname := beego.AppConfig.String("dbname")//dbConn := "root:yu271400@tcp(127.0.0.1:3306)/cmsproject?charset=utf8"dbConn := user + ":" + pwd + "@tcp(" + host + ":" + port + ")/" + dbname + "?charset=utf8"err := orm.RegisterDataBase("default", driverName, dbConn)if err != nil {util.LogError("连接数据库出错")return}util.LogInfo("连接数据库成功")  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异常处理注解 @ExceptionHandler

今天记录下 SpringBoot 中 ExceptionHandler 的使用。 场景 有一个员工表(employee),且给表中的 username 属性设置了唯一性。 -- auto-generated definition create table employee (id bigint auto_increment comment 主键primary key,name va…

【WPF.NET开发】OpenType字体

本文内容 OpenType 字体格式变量大写字母连字花体备用项数字样式版式类 本主题概述了 Windows Presentation Foundation (WPF) 中 OpenType 字体技术的一些主要功能。 1、OpenType 字体格式 OpenType 字体格式是 TrueType 字体格式的扩展,增加了对 PostScript 字…

Linux的SSH远程管理和服务器之间的免密连接

目录 一、远程管理基础 1.ssh协议 2.ssh原理 3、使用ssh协议传输的命令 4.登录方法 二、免密连接 1.免密连接的原理 2.实战 一、远程管理基础 1.ssh协议 ssh协议是基于C/S机构的安全通道协议,通信数据进行加密处理,用于远程管理。 ssh的服务名…

MATLAB二维与三维绘图实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

【图解数据结构】深入剖析时间复杂度与空间复杂度的奥秘

🌈个人主页:聆风吟 🔥系列专栏:图解数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️算法的定义二. ⛳️算法的特性2.1 🔔输入输出2.2 🔔输入输出2.3 &…

MySQL面试题2

文章目录 面试题 (9-15) 面试题 (9-15) 09)查询学过「张三」老师授课的同学的信息 SELECT s.*,c.cname,t.tname FROM t_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score sc WHERE t.tidc.tid and c.cidsc.cid and sc.sids.sid and tname ‘张…

网站建设网络设计营销类网站eyouCMS模板(PC+WAP)

模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统,原创设计、手工书写DIVCSS,完美兼容IE7、Firefox、Chrome、360浏览器等;主流浏览器;结构容易优化;多终端均可正常预览。

【面试合集】说说微信小程序的登录流程?

面试官:说说微信小程序的登录流程? 一、背景 传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行…

线程安全2

文章目录 锁的可重入性死锁内存可见性引起的线程安全 锁的可重入性 直观来看这个代码不能运行 为啥没有出现阻塞? 当前由于是同一个线程,此时的锁对象,就知道了第二次加锁的线程,就是持有锁的线程,第二次操作&#xff…

前端开发必备:掌握正则表达式,轻松应对复杂的表单验证

前言 在前端开发中,经常需要处理 URL 地址、校验手机号合法性、提取域名等。正则表达式是一种常用的工具。通过使用正则表达式,我们可以对用户输入进行有效的验证,确保数据的合法性和完整性。本文将介绍一些常见的正则表达式,帮助…

使用JDK自带的jvisualvm工具查看堆dump文件【回顾】

JDK自带的jvisualvm的使用 打开方式: 直接命令行输入:jvisualvm ,然后回车​​​​​​​ ​​ 或者去jdk的bin目录下找到打开 安装visual GC插件 检测死锁 再点击“死锁 dump”就可以看到死锁的线程信息了;

Vulnhub靶机:driftingblues 4

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues4(10.0.2.20) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…

【Python数据分析系列】实现txt文件与列表(list)相互读写转换(源码+案例)

这是Python数据分析系列原创文章,我的第199篇原创文章。 一、问题 平时在做数据分析或者程序开发的时候,需要将中间的一些结果或最后的处理结果保存下来,比如保存为txt格式的文本文件,这就涉及列表与txt之间的一种读取和写入操作…

spring cloud feign demo

1. 工程结构 2. 父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…

JVM实战(17)——模拟对象晋升

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

将PDF发票转换为excel、xml结构化数据的完美解决方案

随着电子发票的普及&#xff0c;越来越多的企业和个人开始使用PDF格式的电子发票。然而&#xff0c;有时我们需要将电子发票转换为XML格式以便于处理和分析。本文将介绍如何将收到的PDF发票下载为excel、xml文件。首先&#xff0c;我们需要明确一点&#xff0c;PDF是一种基于图…

C#编程-属性和反射

属性和反射 属性是将元数据信息和行为添加到应用程序代码中的简单技术。属性是允许您将声明信息添加到程序的元素。此声明信息在运行时用途广泛,可使用应用程序开发工具在设计时使用。 介绍属性 对象是由其属性值描述的。例如,汽车可以使用它的构造、型号或颜色来描述。类似…

ART-Adversarial Robustness Toolbox检测AI模型及对抗攻击的工具

一、工具简介 Adversarial Robustness Toolbox 是 IBM 研究团队开源的用于检测模型及对抗攻击的工具箱&#xff0c;为开发人员加强 AI模型被误导的防御性&#xff0c;让 AI 系统变得更加安全&#xff0c;ART支持所有流行的机器学习框架 &#xff08;TensorFlow&#xff0c;Ker…

SpringMVC RESTful案例

文章目录 1、准备工作2、功能清单3、具体功能&#xff1a;访问首页a>配置view-controllerb>创建页面 4、具体功能&#xff1a;查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能&#xff1a;删除a>创建处理delete请求方式的表单b>删除超链接…