# 模型
```
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容易犯的错
- 字符串操作