ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 模型 ``` 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" } ```