# 模型
```
package?models
import?(
"fmt"
"github.com/astaxie/beego/orm"
????\_?"github.com/go-sql-driver/mysql"
)
//?用戶
type?User?struct{
????Id??????????????int64`orm:"auto"`
????Name????????????string`orm:"size(100)"`
????Nickname????????string`orm:"size(100)"`
????Pwd?????????????string`orm:"size(100)"`
????Email???????????string`orm:"size(100)"`
????Sex?????????????string`orm:"size(2)"`
????Roleid??????????string`orm:"size(100)"`
????Status??????????int64
????Phone???????????string`orm:"size(16)"`
}
//新增用戶
func?Create(uid?int64,name?string,nickname?string,pwd?string,email?string,
????sex?string,roleId?string,status?int64,?phone?string,)??(user?User){
//查詢用戶是否已存在
????user,?err?:=?QueryById(uid)
if?err?==?true{
return?user
????}else{?
????????o?:=?orm.NewOrm()
????????o.Using("default")
????????newuser:=new(User);
//賦值給模型
????????newuser.Id?=?uid
????????newuser.Name?=?name
????????newuser.Nickname=nickname
????????newuser.Pwd?=?pwd
????????newuser.Email?=?email
????????newuser.Sex?=?sex
????????newuser.Roleid?=roleId
????????newuser.Status?=status
????????newuser.Phone?=?phone
//新增數據
????????o.Insert(newuser)
return?\*newuser
????}
}
//刪除用戶
func?DeleteById(id?int64)?bool?{
????o?:=?orm.NewOrm()
????o.Using("default")
//根據ID得到用戶模型
if?num,?err?:=?o.Delete(&User{Id:?id});?err?==?nil?{
????????fmt.Println("刪除影響的行數:")
????????fmt.Println(num)
returntrue
????}else{
returnfalse
????}??
}
//更新用戶
func?UpdateById(id?int,table?string,filed?map\[string\]?interface{})bool{
????o?:=?orm.NewOrm()
????\_,?err?:=?o.QueryTable(
????????table).Filter(
"Id",?id).Update(
????????filed)
if?err?==?nil{
returntrue
????}
returnfalse
}
//根據用戶ID查詢用戶
func?QueryById(uid?int64)?(User,?bool){
????o?:=?orm.NewOrm()
????u?:=?User{Id:?uid}
????err?:=?o.Read(&u)
if?err?==?orm.ErrNoRows?{
????????fmt.Println("查詢不到")
return?u,false
????}?elseif?err?==?orm.ErrMissPK?{
????????fmt.Println("找不到主鍵")
return?u,false
????}?else?{
????????fmt.Println(u.Id,?u.Name)
return?u,true
????}
}
//根據用戶名稱查詢用戶???
func?QueryByName(name?string)?(User,?error)?{
var?user?User
????o?:=?orm.NewOrm()
????qs?:=?o.QueryTable("user")
????err?:=?qs.Filter("Name",?name).One(&user)
????fmt.Println(err)
if?err?==?nil?{
????????fmt.Println(user.Name)
return?user,nil
????}
return?user,?err
}
//根據用戶數據列表?
func?DataList()?(users?\[\]User)?{
????o?:=?orm.NewOrm()
????qs?:=?o.QueryTable("user")
var?us?\[\]User
????cnt,?err?:=??qs.Filter("id\_\_gt",?0).OrderBy("-id").Limit(10,?0).All(&us)
if?err?==?nil?{
????????fmt.Printf("count",?cnt)
????}
return?us
}
//查詢語句,sql語句的執行
//格式類似于:o.Raw("UPDATE?user?SET?name?=???WHERE?name?=??",?"testing",?"slene")
//
func?QueryBySql(sql?string,?qarms\[\]string)?bool{
????o?:=?orm.NewOrm()
//執行sql語句
????o.Raw(sql,?qarms)
returntrue
}
//根據用戶分頁數據列表???
func?LimitList(pagesize?int,pageno?int)?(users?\[\]User)?{
????o?:=?orm.NewOrm()
????qs?:=?o.QueryTable("user")
var?us?\[\]User
????cnt,?err?:=??qs.Limit(pagesize,?(pageno-1)\*pagesize).All(&us)
if?err?==?nil?{
????????fmt.Printf("count",?cnt)
????}
return?us
}
//根據用戶數據總個數
func?GetDataNum()?int64?{
????o?:=?orm.NewOrm()
????qs?:=?o.QueryTable("user")
var?us?\[\]User
????num,?err?:=??qs.Filter("id\_\_gt",?0).All(&us)
if?err?==?nil?{
return?num
????}else{
return0
????}??
}
//初始化模型
func?init()?{
//?需要在init中注冊定義的model
????orm.RegisterModel(new(User))
}
```
# //控制器
```
package?controllers
import?(
"webapp/models"
"strconv"
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
????\_"github.com/go-sql-driver/mysql"
)
type?HomeController?struct?{
????beego.Controller
}
//get請求用戶列表?執行的方法
func?(c?\*HomeController)?Get()?{
????o?:=?orm.NewOrm()
????o.Using("default")
//用戶列表
????userlist:=models.DataList()
????fmt.Println("用戶列表數據:")
????fmt.Println(userlist)
/\*返回json數據\*/
?????c.Data\["datas"\]=userlist
?????c.TplName?=?"home.html"
}
//刪除方法
type?DeleteHomeController?struct?{
????beego.Controller
}
func?(c?\*DeleteHomeController)?Get()?{
????o?:=?orm.NewOrm()
????o.Using("default")
????id,?\_?:=?c.GetInt64("Id")
????fmt.Println(id)
????isdelete:=models.DeleteById(id)
if?isdelete{
??????fmt.Println("刪除成功")????
????}else{
??????fmt.Println("刪除失敗")
????}
//路徑的跳轉
????c.Redirect("/",?302)
}
//get請求用戶列表?執行的方法
type?EditHomeController?struct?{
????beego.Controller
}
func?(c?\*EditHomeController)?Get()?{
????o?:=?orm.NewOrm()
????o.Using("default")
//用戶列表
????idval,errId:=strconv.ParseInt(c.GetString("Id"),10,64);
if?errId!=nil{
????????fmt.Println("缺少參數id");
????}
????user,err:=models.QueryById(idval)
if?err==true{
????????fmt.Println("獲取模型失敗");
????????fmt.Println(err);
????}else{
????????fmt.Println("獲取模型成功");
????}
/\*返回json數據\*/
?????c.Data\["data"\]=user
?????c.TplName?=?"edit.html"
}
//編輯新增/更新方法
type?UpdateHomeController?struct?{
????beego.Controller
}
func?(c?\*UpdateHomeController)?Post()?{
????o?:=?orm.NewOrm()
????o.Using("default")
????fields?:=?make(map\[string\]?interface{})
//獲取參數
????id,?\_?:=?c.GetInt("Id")
????name:=c.GetString("name")
????nickname:=c.GetString("nickname")
????pwd:=c.GetString("pwd")
????email:=c.GetString("email")
????sex:=c.GetString("sex")
????phone:=c.GetString("phone")
????roleid:="1";
????status,\_:=strconv.ParseInt("1",10,64);
//新增用戶
if?id==0?{
???????idval,\_:=strconv.ParseInt("0",10,64);
//新增一條數據,并給模型賦值
???????user?:=models.Create(idval,name,nickname,pwd,email,sex,roleid,status,phone)?
???????fmt.Println(user)
????}else{
????????fields\["Id"\]=id
????????name:=?c.GetString("name")
????????fields\["Name"\]=name
????????nickname:=?c.GetString("nickname")
????????fields\["Nickname"\]=nickname
????????pwd:=?c.GetString("pwd")
????????fields\["Pwd"\]=pwd
????????sex:=?c.GetString("sex")
????????fields\["Sex"\]=sex
????????email:=?c.GetString("email")
????????fields\["Email"\]=email
//更新
????????models.UpdateById(id,"user",?fields)
????}
//路徑的跳轉
????c.Redirect("/Home/List",?302)
}
//控制器
type?UserController?struct?{
????beego.Controller
}
//get請求用戶分頁列表?執行的方法
func?(c?\*UserController)?Get()?{
????o?:=?orm.NewOrm()
????o.Using("default")
//得到當前分頁html的數據
????pa,err:=c.GetInt("page")
if?err!=nil{
????????println(err)
????}
????pre\_page:=3
????totals:=models.GetDataNum()
????res?:=?models.Paginator(pa,?pre\_page,?totals)
//得到分頁user的數據
????userlist:=models.LimitList(3,pa)
????c.Data\["datas"\]?=?userlist??//用戶的數據
????c.Data\["paginator"\]?=?res???//分頁的數據
????c.Data\["totals"\]?=?totals???//分頁的數據
????c.TplName="list.html"
}
```
- go環境搭建
- 解決go get網絡慢的問題
- beego的安裝
- bee的安裝
- 編輯器
- go module
- 配置文件詳解
- 配置文件其他說明
- 路由方法
- 路由
- 數據校驗
- 校驗函數
- 頁面跳轉
- 獲取前端數據
- json文件的獲取
- xsrf的用法
- xsrf的防護
- srfs和json的搭配
- flash的用法
- 過濾器
- url反轉
- 各類數據的處理
- 模板函數
- 內置模板函數
- 自定義模板函數
- 模板
- 模板處理
- 模板渲染
- 視圖文件的處理
- 靜態文件
- 請求方式判斷
- 驗證碼
- 另一種方法
- 分頁類
- session
- 登錄判斷
- orm模塊
- 使用方法
- mysql的安裝
- 安裝orm及驅動
- 建立模型
- 自定義模型
- 增刪改查
- 高級查詢
- 常見問題匯總
- 代碼收藏
- 打包部署
- go build打包
- utils收藏
- 新goer容易犯的錯
- 字符串操作