设为首页 加入收藏

TOP

Beego学习笔记四:编写Model(一)
2017-12-07 14:22:16 】 浏览:1006
Tags:Beego 学习 笔记 编写 Model

 

MVC实践一:编写模型

1>     打开mysql数据库,设计表的结构

<1>登录mysql数据库,如下

 

 

<2>这三个标注的参数皆有用,需要谨记。

<3>创建名为test的数据库,创建user表,字段设计如下图所示:

 

 

2>     在vs code中新建一个模型,命名为user.go,对应mysql数据库中的user表。其代码如下:

 

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)
		return true
	}else{
		return false
	}	
}

//更新用户
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{
		return true
	}
	return false
}


//根据用户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
	} else if 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)

	return true
}
//根据用户分页数据列表	
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)*pagesi
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Beego 学习笔记二:第一个项目 下一篇Beego学习笔记6:分页的实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目