【1 beego学习 -MAC框架与ORM数据库】

这篇具有很好参考价值的文章主要介绍了【1 beego学习 -MAC框架与ORM数据库】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装beego

1,由于在github上安装,所以需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量
修改go环境变量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn

2,设置GOPATH 环境变量,并且将 GOPATH/bin 加入到了环境变量。
3,安装bee
go get -u -v github.com/astaxie/beego
go get -u -v github.com/beego/bee
go install github.com/beego/bee/v2@latest 之后就有bee命令了

按照官网安装 http://beego.gocn.vip/beego/zh/developing/#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B

0 beego的启动流程

1 入口

package main

import (
//全局使用的路由和models _ 包名 会自动执行包下面的init函数,每个包只能有一个init函数
	_ "studyDemo/models"
	_ "studyDemo/routers"

	beego "github.com/beego/beego/v2/server/web"
)

func main() {
	beego.Run()
}

2 根据请求路由加载对应的控制器

前端get可以使用href
前端post使用表单

package routers

import (
	beego "github.com/beego/beego/v2/server/web"
	//导入控制器
	"studyDemo/controllers"
)

/*路由与控制器请求方法*/
func init() {
	beego.Router("/", &controllers.MainController{})
	//路径-对应的控制器-控制器加载时的请求方式:请求调用的方法(可以有多个)
	beego.Router("/DB", &controllers.DBController{}, "get:GetFunc;post:PostFunc")
}

3 控制器加载对应的view,以及数据处理操作

package controllers

import (
	"github.com/beego/beego/v2/adapter/orm"
	beego "github.com/beego/beego/v2/server/web"
	"studyDemo/models"
)

/*定义控制器*/
type MainController struct {
	beego.Controller
}
type DBController struct {
	beego.Controller
}

/*控制器路由方法*/
func (c *MainController) Get() {
//传递数据给view
	c.Data["Website"] = "beego.vip"
	c.Data["Email"] = "astaxie@gmail.com"
//注册控制器对应的view
	c.TplName = "test.tpl"
}
func (c *DBController) GetFunc() {

	c.TplName = "test.tpl"

}
func (c *DBController) PostFunc() {
	c.TplName = "index.tpl"
}

4 view的显示以及使用控制器传递的数据

//传递的数据在{{}}中使用.key
<h2>hello{{.Email}}<h2 \>

1 ORM框架 链接数据库

Beego中内嵌了ORM框架,用来操作数据库。那么ORM框架是什么呢?ORM框架是Object-RelationShipMapping的缩写,中文叫关系对象映射.可以不再使用sql语句可以操作数据库…
通过操作对象来操作数据库.
【1 beego学习 -MAC框架与ORM数据库】

1 数据库表的创建

数据库不能通过orm创建
表的创建在model
表的操作在控制器


package models

//导包
import (
	"github.com/beego/beego/v2/adapter/orm"
	_ "github.com/go-sql-driver/mysql"
)

// 要生成表的类,不要使用下划线定义属性_
type User struct {
	Id       int
	Name     string
	PassWord string
}

func init() {
	//获取数据库对象,
	orm.RegisterDataBase("default", "mysql", "root@tcp(127.0.0.1:3306)/test?charset=utf8")
	//根据结构体获取表结构表
	orm.RegisterModel(new(User))
	//生成表,一般放在model
	orm.RunSyncdb("default", false, true)

	//操作表,一般放在控制器

}

创建带约束的表

1 在数据库中创建表的时候,会给字段加很多限制属性,比如非空,长度,默认值等等,在ORM中,创建表时也可以给各个字段添加相应的限制。
2 要给哪个字段添加属性,需要在这个字段后面添加 `` 括起来的内容,格式为orm:“限制条件”。

type Article struct {
	Id int `orm:"pk;auto"`
	ArtiName string `orm:"size(20)"`
	Atime time.Time `orm:"auto_now"`
	Acount int `orm:"default(0);null"`
	Acontent string `orm:"size(500)"`
	Aimg string  `orm:"size(100)"`
}

约束字段

限制条件 作用
pk 设置该字段为主键
auto 这只该字段自增,但是要求该字段必须为整型
default(0) 设置该字段的默认值,需要注意字段类型和默认值类型一致
size(100) 设置该字段长度为100个字节,一般用来设置字符串类型
null 设置该字段允许为空,默认不允许为空
unique 设置该字段全局唯一
digits(12);decimals(4) 设置浮点数位数和精度。比如这个是说,浮点数总共12位,小数位为四位。
auto_now 针对时间类型字段,作用是保存数据的更新时间
auto_now_add 针对时间类型字段,作用是保存数据的添加时间

注意:当模型定义里没有主键时,符合int, int32, int64, uint, uint32, uint64 类型且名称为 Id 的 Field 将被视为主键,能够自增. "

2 数据库表的基础操作(增删查改)

在控制器中操作

1 插入一条数据

//插入一条记录,需要一个记录对象变量,然后通过orm框架直接插入数据库,orm都是地址操作
	var user models.User
	user.Name = "tom"
	user.PassWord = "123456"

	orm := orm.NewOrm()
	orm.Insert(&user)


2 查询数据

//定义对象,用于存储查询到的数据
var user models.User
	//查询条件字段(where)
	user.Id= 1

	or := orm.NewOrm()
	//查询结果保存到user,查询字段,返回查询到的第一个结果
	//默认查询字段的的主键,可以不用指定查询字段
	err := or.Read(&user, "Id")
	if err != nil {
		fmt.Println("fail-------", err)
		return
	}
	c.Data["result"] = user
	c.TplName = "test.tpl"

3 更新操作

需要先查询是否有数据,再进行更新

//更新操作
	//查询对象是否存在
	var user models.User
	user.Id = 1
	err := orm.NewOrm().Read(&user, "Id")
	if err != nil {
		fmt.Println("fail-------", err)
		return
	}
	//更新对象数据
	user.Name = "jack"
	//不传递更新字段就全部更新
	result, err := orm.NewOrm().Update(&user, "Name")

	if err != nil {
		fmt.Println("fail-------", err)
		return
	}
	fmt.Println("success-------", result)

	c.Data["result"] = user
	c.TplName = "test.tpl"

4 删除一条数据

//删除一条数据
	var user models.User
	user.Id = 1
	result, err := orm.NewOrm().Delete(&user)
	if err != nil {
		fmt.Println("fail-------", err)
		return
	}
	fmt.Println("success-------", result)
	c.Data["result"] = user
	c.TplName = "test.tpl"

在路由的get或者post的方法中,获取数据

this.GetString():获取字符串类型值
this.GetInt():获取整型值
this.GetFloat:获取浮点型值

this.GetFile():获取上传的文件
作用:接收前端传递过来的数据,不管是get请求还是post请求,都能接收。
参数: 是传递数据的key值,一般情况下是form表单中 标签的name属性值
返回值:根据返回类型不同,返回值也不一样,最常用的GetString()只有一个返回值,如果没有取到值
就返回空字符串,其他几个函数会返回一个错误类型。获取的值一般是 标签
里面的value属性值。至于比较特殊的,我们用到的时候给大家做介绍。
知道了获取数据函数,我们就可以获取前端传递过来的数据啦。

userName := this.GetString("userName")
passwd := this.GetString("passwd")

3 页面之间的跳转

beego里面页面跳转的方式有两种,一种是重定向,一种是渲染。

1重定向

重定向用到的方法是 this.Redirect() 函数,有两个参数,第一个参数是请求路径,第二个参数是http状态码。

重定向的工作流程是:
1:当服务端向客户端响应 redirect后,并没有提供任何view数据进行渲染,仅仅是告诉浏览器响应为 redirect,以
及重定向的目标地址
2:浏览器收到服务端 redirect 过来的响应,会再次发起一个 http 请求
3:由于是浏览器再次发起了一个新的 http 请求,所以浏览器地址栏中的 url 会发生变化
4:浏览中最终得到的页面是最后这个 重定向的url 请求后的页面
5:所以redirect(“/register”,302) 相当于你在浏览器中手动输入 localhost/register

2渲染

渲染就是控制期把一些数据传递给视图,然后视图用这些输出组织成html界面。所以不会再给浏览器发请求,是服
务器自己的行为,所以浏览器的地址栏不会改变,但是显示的页面可能会发生变化。用的函数是: this.TplName =
“login.html”文章来源地址https://www.toymoban.com/news/detail-500665.html

2 高级查询

1 获取全部数据

o := orm.NewOrm()
	qs := o.QueryTable("article")
	var articles []models.Article
	_, err := qs.All(&articles)
	if err != nil {
		c.Data["errmsg"] = "查询数据错误"
		c.TplName = "add.html"
	}
	c.Data["articles"] = articles

2 分页数据获取

//展示文章列表页
func(this*ArticleController)ShowArticleList(){
	//获取数据
	//高级查询
	//指定表
	o := orm.NewOrm()
	qs := o.QueryTable("Article")//queryseter
	var articles []models.Article

	//查询总记录数
	count,_ := qs.Count()
	//获取总页数
	pageSize := 2

	pageCount := math.Ceil(float64(count) / float64(pageSize))
//获取页码
	pageIndex,err:= this.GetInt("pageIndex")
	if err != nil{
		pageIndex = 1
	}

	//获取数据
	//作用就是获取数据库部分数据,第一个参数,获取几条,第二个参数,从那条数据开始获取,返回值还是querySeter
	//起始位置计算
	start := (pageIndex - 1)*pageSize

	qs.Limit(pageSize,start).All(&articles)



	//传递数据
	this.Data["pageIndex"] = pageIndex
	this.Data["pageCount"] = int(pageCount)
	this.Data["count"] = count
	this.Data["articles"] = articles
	this.TplName = "index.html"
}

到了这里,关于【1 beego学习 -MAC框架与ORM数据库】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 献给转java的c#和java程序员的数据库orm框架

    一个好的程序员不应被语言所束缚,正如我现在开源java的orm框架一样,如果您是一位转java的c#程序员,那么这个框架可以带给你起码没有那么差的业务编写和强类型体验。如果您是一位java程序员,那么该框架可以提供比 Mybatis-Plus 功能更加丰富、性能更高,更加轻量和完全免费的体

    2024年02月05日
    浏览(28)
  • Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

    数据库操作 MySQL数据库+pymysql Django开发操作数据库更简单,内部提供了ORM框架。 安装第三方模块 ORM可以做的事: 1、创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】 2、操作表中的数据(不用写SQL语句)。 1、自己创建数据库 1)启动MySQL服务 2)自带

    2024年02月14日
    浏览(43)
  • Python数据权限的管理通常涉及到几个关键组件:身份验证,、授权和访问控制。这通常是通过使用数据库、ORM(对象关系映射)框架、API框架和中间件

    在Python中,数据权限的管理通常涉及到几个关键组件:身份验证,、授权和访问控制。这通常是通过使用数据库、ORM(对象关系映射)框架、API框架和中间件等技术来实现的。以下是一些建议的步骤和工具,用于在Python项目中实施数据权限管理: 用户身份验证: 使用如Djan

    2024年04月26日
    浏览(30)
  • beego通过gorm访问mysql数据库

    一、下载golang的版本如下:  二、解压下载包到C盘 三、配置golang的系统环境变量  四、进入新建的工作目录C:project下载并安装beego 五、将新生成的bee.exe所在的路径“c:projectbin”加入到系统变量path里面 六、下载安装数据库mysql 例如在上图中, 选“No thanks,just start my downlo

    2024年02月13日
    浏览(33)
  • Django ORM:最全面的数据库处理指南

    深度探讨Django ORM的概念、基础使用、进阶操作以及详细解析在实际使用中如何处理数据库操作。同时,我们还讨论了模型深入理解,如何进行CRUD操作,并且深化理解到数据库迁移等高级主题。为了全面解读Django ORM,我们也讨论了其存在的不足,并对其未来发展进行了展望。

    2024年02月13日
    浏览(48)
  • Mac环境下安装MongoDB数据库

    首先,从MongoDB官网下载自己想要使用的版本。 解压缩下载的压缩包重命名为mongodb,将mongodb文件夹复制到/usr/local目录下。 打开.zshrc 文件,若没有此文件可以创建一个 把 MongoDB 的二进制命令文件目录(安装目录/bin)添加到 PATH 路径中 编辑完成后保存并退出,然后使用sourc

    2024年02月16日
    浏览(38)
  • SQLAlchemy ORM指南:简化数据库操作的最佳实践

    背景: ​ SQLAlchemy是一个数据库的ORM框架,让我们操作数据库的时候不要再用SQL语句了,跟直接操作模型一样。操作十分便捷,其实SQLAlchemy应该是在Flask和Django应用的特别多,而且在flask中已经集成了flask_sqlalchemy ,好像是 SQLAlchemy的作者和 Flask是同一个,背景了解到这里就可

    2024年01月20日
    浏览(68)
  • Django ORM:数据库操作的Python化艺术

    Django的对象关系映射器(ORM)是其核心功能之一,允许开发者使用Python代码来定义、操作和查询数据库。这篇文章将带你深入了解Django ORM的强大之处,从基本概念到高级查询技巧,提供丰富的示例帮助你掌握使用Django ORM进行有效和高效的数据库操作。 Django ORM的目的是提供一

    2024年02月04日
    浏览(49)
  • Mac系统安装Navicat Premium数据库与汉化

    第一步:下载Navicat Premium安装包和汉化包 网盘地址:https://pan.baidu.com/s/1DhsMH3NImUQPTajByRpnhA?pwd=tta9 第二步:安装Navicat Premium 双击安装包,选择manual install,将Navicat 加入到applications中; 如果显示包文件损坏双击Open Gatekeeper friendly打开终端,点击回车执行完成,单击Navicat拖拽到

    2024年02月11日
    浏览(27)
  • 【Python】sqlmodel: Python 数据库管理ORM 的终极形态?

    大家都知道ORM(Object Relational Mapping)是一种将对象和关系数据库中的表进行映射的技术,它可以让开发者更加方便地操作数据库,而不用直接使用SQL语句。 直接使用SQL语句操作数据库,虽然可以让开发者直接与数据库打交道,但手动编写SQL语句,容易出错,而且灵活性上比

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包