国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【1 beego學習 -MAC框架與ORM數(shù)據(jù)庫】

這篇具有很好參考價值的文章主要介紹了【1 beego學習 -MAC框架與ORM數(shù)據(jù)庫】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

安裝beego

1,由于在github上安裝,所以需要安裝git軟件,安裝過程一直點擊下一步即可。安裝完成后需要配置環(huán)境變量
修改go環(huán)境變量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn

2,設置GOPATH 環(huán)境變量,并且將 GOPATH/bin 加入到了環(huán)境變量。
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命令了

按照官網(wǎng)安裝 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 _ 包名 會自動執(zhí)行包下面的init函數(shù),每個包只能有一個init函數(shù)
	_ "studyDemo/models"
	_ "studyDemo/routers"

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

func main() {
	beego.Run()
}

2 根據(jù)請求路由加載對應的控制器

前端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,以及數(shù)據(jù)處理操作

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() {
//傳遞數(shù)據(jù)給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的顯示以及使用控制器傳遞的數(shù)據(jù)

//傳遞的數(shù)據(jù)在{{}}中使用.key
<h2>hello{{.Email}}<h2 \>

1 ORM框架 鏈接數(shù)據(jù)庫

Beego中內嵌了ORM框架,用來操作數(shù)據(jù)庫。那么ORM框架是什么呢?ORM框架是Object-RelationShipMapping的縮寫,中文叫關系對象映射.可以不再使用sql語句可以操作數(shù)據(jù)庫…
通過操作對象來操作數(shù)據(jù)庫.
【1 beego學習 -MAC框架與ORM數(shù)據(jù)庫】

1 數(shù)據(jù)庫表的創(chuàng)建

數(shù)據(jù)庫不能通過orm創(chuàng)建
表的創(chuàng)建在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() {
	//獲取數(shù)據(jù)庫對象,
	orm.RegisterDataBase("default", "mysql", "root@tcp(127.0.0.1:3306)/test?charset=utf8")
	//根據(jù)結構體獲取表結構表
	orm.RegisterModel(new(User))
	//生成表,一般放在model
	orm.RunSyncdb("default", false, true)

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

}

創(chuàng)建帶約束的表

1 在數(shù)據(jù)庫中創(chuàng)建表的時候,會給字段加很多限制屬性,比如非空,長度,默認值等等,在ORM中,創(chuàng)建表時也可以給各個字段添加相應的限制。
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個字節(jié),一般用來設置字符串類型
null 設置該字段允許為空,默認不允許為空
unique 設置該字段全局唯一
digits(12);decimals(4) 設置浮點數(shù)位數(shù)和精度。比如這個是說,浮點數(shù)總共12位,小數(shù)位為四位。
auto_now 針對時間類型字段,作用是保存數(shù)據(jù)的更新時間
auto_now_add 針對時間類型字段,作用是保存數(shù)據(jù)的添加時間

注意:當模型定義里沒有主鍵時,符合int, int32, int64, uint, uint32, uint64 類型且名稱為 Id 的 Field 將被視為主鍵,能夠自增. "

2 數(shù)據(jù)庫表的基礎操作(增刪查改)

在控制器中操作

1 插入一條數(shù)據(jù)

//插入一條記錄,需要一個記錄對象變量,然后通過orm框架直接插入數(shù)據(jù)庫,orm都是地址操作
	var user models.User
	user.Name = "tom"
	user.PassWord = "123456"

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


2 查詢數(shù)據(jù)

//定義對象,用于存儲查詢到的數(shù)據(jù)
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 更新操作

需要先查詢是否有數(shù)據(jù),再進行更新

//更新操作
	//查詢對象是否存在
	var user models.User
	user.Id = 1
	err := orm.NewOrm().Read(&user, "Id")
	if err != nil {
		fmt.Println("fail-------", err)
		return
	}
	//更新對象數(shù)據(jù)
	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 刪除一條數(shù)據(jù)

//刪除一條數(shù)據(jù)
	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的方法中,獲取數(shù)據(jù)

this.GetString():獲取字符串類型值
this.GetInt():獲取整型值
this.GetFloat:獲取浮點型值

this.GetFile():獲取上傳的文件
作用:接收前端傳遞過來的數(shù)據(jù),不管是get請求還是post請求,都能接收。
參數(shù): 是傳遞數(shù)據(jù)的key值,一般情況下是form表單中 標簽的name屬性值
返回值:根據(jù)返回類型不同,返回值也不一樣,最常用的GetString()只有一個返回值,如果沒有取到值
就返回空字符串,其他幾個函數(shù)會返回一個錯誤類型。獲取的值一般是 標簽
里面的value屬性值。至于比較特殊的,我們用到的時候給大家做介紹。
知道了獲取數(shù)據(jù)函數(shù),我們就可以獲取前端傳遞過來的數(shù)據(jù)啦。

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

3 頁面之間的跳轉

beego里面頁面跳轉的方式有兩種,一種是重定向,一種是渲染。

1重定向

重定向用到的方法是 this.Redirect() 函數(shù),有兩個參數(shù),第一個參數(shù)是請求路徑,第二個參數(shù)是http狀態(tài)碼。

重定向的工作流程是:
1:當服務端向客戶端響應 redirect后,并沒有提供任何view數(shù)據(jù)進行渲染,僅僅是告訴瀏覽器響應為 redirect,以
及重定向的目標地址
2:瀏覽器收到服務端 redirect 過來的響應,會再次發(fā)起一個 http 請求
3:由于是瀏覽器再次發(fā)起了一個新的 http 請求,所以瀏覽器地址欄中的 url 會發(fā)生變化
4:瀏覽中最終得到的頁面是最后這個 重定向的url 請求后的頁面
5:所以redirect(“/register”,302) 相當于你在瀏覽器中手動輸入 localhost/register

2渲染

渲染就是控制期把一些數(shù)據(jù)傳遞給視圖,然后視圖用這些輸出組織成html界面。所以不會再給瀏覽器發(fā)請求,是服
務器自己的行為,所以瀏覽器的地址欄不會改變,但是顯示的頁面可能會發(fā)生變化。用的函數(shù)是: this.TplName =
“l(fā)ogin.html”文章來源地址http://www.zghlxwxcb.cn/news/detail-500665.html

2 高級查詢

1 獲取全部數(shù)據(jù)

o := orm.NewOrm()
	qs := o.QueryTable("article")
	var articles []models.Article
	_, err := qs.All(&articles)
	if err != nil {
		c.Data["errmsg"] = "查詢數(shù)據(jù)錯誤"
		c.TplName = "add.html"
	}
	c.Data["articles"] = articles

2 分頁數(shù)據(jù)獲取

//展示文章列表頁
func(this*ArticleController)ShowArticleList(){
	//獲取數(shù)據(jù)
	//高級查詢
	//指定表
	o := orm.NewOrm()
	qs := o.QueryTable("Article")//queryseter
	var articles []models.Article

	//查詢總記錄數(shù)
	count,_ := qs.Count()
	//獲取總頁數(shù)
	pageSize := 2

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

	//獲取數(shù)據(jù)
	//作用就是獲取數(shù)據(jù)庫部分數(shù)據(jù),第一個參數(shù),獲取幾條,第二個參數(shù),從那條數(shù)據(jù)開始獲取,返回值還是querySeter
	//起始位置計算
	start := (pageIndex - 1)*pageSize

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



	//傳遞數(shù)據(jù)
	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數(shù)據(jù)庫】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 獻給轉java的c#和java程序員的數(shù)據(jù)庫orm框架

    一個好的程序員不應被語言所束縛,正如我現(xiàn)在開源java的orm框架一樣,如果您是一位轉java的c#程序員,那么這個框架可以帶給你起碼沒有那么差的業(yè)務編寫和強類型體驗。如果您是一位java程序員,那么該框架可以提供比 Mybatis-Plus 功能更加豐富、性能更高,更加輕量和完全免費的體

    2024年02月05日
    瀏覽(18)
  • Django學習記錄:使用ORM操作MySQL數(shù)據(jù)庫并完成數(shù)據(jù)的增刪改查

    Django學習記錄:使用ORM操作MySQL數(shù)據(jù)庫并完成數(shù)據(jù)的增刪改查

    數(shù)據(jù)庫操作 MySQL數(shù)據(jù)庫+pymysql Django開發(fā)操作數(shù)據(jù)庫更簡單,內部提供了ORM框架。 安裝第三方模塊 ORM可以做的事: 1、創(chuàng)建、修改、刪除數(shù)據(jù)庫中的表(不用寫SQL語句)?!緹o法創(chuàng)建數(shù)據(jù)庫】 2、操作表中的數(shù)據(jù)(不用寫SQL語句)。 1、自己創(chuàng)建數(shù)據(jù)庫 1)啟動MySQL服務 2)自帶

    2024年02月14日
    瀏覽(96)
  • Python數(shù)據(jù)權限的管理通常涉及到幾個關鍵組件:身份驗證,、授權和訪問控制。這通常是通過使用數(shù)據(jù)庫、ORM(對象關系映射)框架、API框架和中間件

    在Python中,數(shù)據(jù)權限的管理通常涉及到幾個關鍵組件:身份驗證,、授權和訪問控制。這通常是通過使用數(shù)據(jù)庫、ORM(對象關系映射)框架、API框架和中間件等技術來實現(xiàn)的。以下是一些建議的步驟和工具,用于在Python項目中實施數(shù)據(jù)權限管理: 用戶身份驗證: 使用如Djan

    2024年04月26日
    瀏覽(28)
  • beego通過gorm訪問mysql數(shù)據(jù)庫

    beego通過gorm訪問mysql數(shù)據(jù)庫

    一、下載golang的版本如下: ?二、解壓下載包到C盤 三、配置golang的系統(tǒng)環(huán)境變量 ?四、進入新建的工作目錄C:project下載并安裝beego 五、將新生成的bee.exe所在的路徑“c:projectbin”加入到系統(tǒng)變量path里面 六、下載安裝數(shù)據(jù)庫mysql 例如在上圖中, 選“No thanks,just start my downlo

    2024年02月13日
    瀏覽(23)
  • Django ORM:最全面的數(shù)據(jù)庫處理指南

    深度探討Django ORM的概念、基礎使用、進階操作以及詳細解析在實際使用中如何處理數(shù)據(jù)庫操作。同時,我們還討論了模型深入理解,如何進行CRUD操作,并且深化理解到數(shù)據(jù)庫遷移等高級主題。為了全面解讀Django ORM,我們也討論了其存在的不足,并對其未來發(fā)展進行了展望。

    2024年02月13日
    瀏覽(25)
  • Mac環(huán)境下安裝MongoDB數(shù)據(jù)庫

    Mac環(huán)境下安裝MongoDB數(shù)據(jù)庫

    首先,從MongoDB官網(wǎng)下載自己想要使用的版本。 解壓縮下載的壓縮包重命名為mongodb,將mongodb文件夾復制到/usr/local目錄下。 打開.zshrc 文件,若沒有此文件可以創(chuàng)建一個 把 MongoDB 的二進制命令文件目錄(安裝目錄/bin)添加到 PATH 路徑中 編輯完成后保存并退出,然后使用sourc

    2024年02月16日
    瀏覽(27)
  • Django ORM:數(shù)據(jù)庫操作的Python化藝術

    Django ORM:數(shù)據(jù)庫操作的Python化藝術

    Django的對象關系映射器(ORM)是其核心功能之一,允許開發(fā)者使用Python代碼來定義、操作和查詢數(shù)據(jù)庫。這篇文章將帶你深入了解Django ORM的強大之處,從基本概念到高級查詢技巧,提供豐富的示例幫助你掌握使用Django ORM進行有效和高效的數(shù)據(jù)庫操作。 Django ORM的目的是提供一

    2024年02月04日
    瀏覽(33)
  • SQLAlchemy ORM指南:簡化數(shù)據(jù)庫操作的最佳實踐

    SQLAlchemy ORM指南:簡化數(shù)據(jù)庫操作的最佳實踐

    背景: ? SQLAlchemy是一個數(shù)據(jù)庫的ORM框架,讓我們操作數(shù)據(jù)庫的時候不要再用SQL語句了,跟直接操作模型一樣。操作十分便捷,其實SQLAlchemy應該是在Flask和Django應用的特別多,而且在flask中已經(jīng)集成了flask_sqlalchemy ,好像是 SQLAlchemy的作者和 Flask是同一個,背景了解到這里就可

    2024年01月20日
    瀏覽(57)
  • Mac系統(tǒng)安裝Navicat Premium數(shù)據(jù)庫與漢化

    Mac系統(tǒng)安裝Navicat Premium數(shù)據(jù)庫與漢化

    第一步:下載Navicat Premium安裝包和漢化包 網(wǎng)盤地址:https://pan.baidu.com/s/1DhsMH3NImUQPTajByRpnhA?pwd=tta9 第二步:安裝Navicat Premium 雙擊安裝包,選擇manual install,將Navicat 加入到applications中; 如果顯示包文件損壞雙擊Open Gatekeeper friendly打開終端,點擊回車執(zhí)行完成,單擊Navicat拖拽到

    2024年02月11日
    瀏覽(23)
  • 【Python】sqlmodel: Python 數(shù)據(jù)庫管理ORM 的終極形態(tài)?

    大家都知道ORM(Object Relational Mapping)是一種將對象和關系數(shù)據(jù)庫中的表進行映射的技術,它可以讓開發(fā)者更加方便地操作數(shù)據(jù)庫,而不用直接使用SQL語句。 直接使用SQL語句操作數(shù)據(jù)庫,雖然可以讓開發(fā)者直接與數(shù)據(jù)庫打交道,但手動編寫SQL語句,容易出錯,而且靈活性上比

    2024年02月08日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包