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)*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{
return 0
}
}
//初始化模型
func init() {
// 需要在init中注册定义的model
orm.RegisterModel(new(User))
}
3> 在main.go文件中添加代码,注册驱动,连接mysql数据库

package main import (
"fmt"
_ "webapp/routers"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func init(){
dbhost := beego.AppConfig.String("dbhost")
dbport := beego.AppConfig.String("dbport")
dbuser := beego.AppConfig.String("dbuser")
dbpassword := beego.AppConfig.String("dbpassword")
db := beego.AppConfig.String("db") //注册mysql Driver
orm.RegisterDriver("mysql", orm.DRMySQL)
//构造conn连接
//用户名:密码@tcp(url地址)/数据库
conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8"
//注册数据库连接
orm.RegisterDataBase("default", "mysql", conn) fmt.Printf("数据库连接成功!%s\n", conn)
}
func main() {
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库 beego.Run()
}
4> Config.go文件的代码如下:

5> 模型的编写暂时到此为止,之后进行控制器的编写,使用这些模型以及对应的方法
Beego学习笔记四:编写Model的更多相关文章
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...
- Beego 学习笔记15:布局页面
页面布局 1> 一个html页面由:head部分,body部分,内部css,内部js,外联css,外联的js这几部分组成.因此,一个布局文件也就需要针对这些进行拆分. 2> ...
- Beego 学习笔记14:Session控制
Session控制 1> Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2> Beego框架内置了 session 模块,目前 ...
- 官网实例详解-目录和实例简介-keras学习笔记四
官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras 版权声明: ...
- go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)
目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...
- Hadoop学习笔记(5) ——编写HelloWorld(2)
Hadoop学习笔记(5) ——编写HelloWorld(2) 前面我们写了一个Hadoop程序,并让它跑起来了.但想想不对啊,Hadoop不是有两块功能么,DFS和MapReduce.没错,上一节我 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
随机推荐
- python3用turtle库进行绘制小猪佩奇图案
晚上闲着无事,深入学习这个turtle用法,就做了小猪佩奇图 附上代码: # coding: utf-8 #功能:绘画小猪佩奇 import turtle as t t.screensize(400, ...
- CentOS7配置本地Yum源
从CentOS7官网下载DVD中存在需要的大部分软件,所以在没有网络的情况下可以配置yum源为本地的DVD,下载速度快,软件稳定.1. 如果使用虚拟机,那么就在虚拟机中挂载DVD的iso文件.2. 使 ...
- redis常用操作(测试必备)
连接redis redis的安装及基础配置,参考:https://www.cnblogs.com/UncleYong/p/9882843.html redis中,数据是key-value方式存储,ke ...
- 第二阶段冲刺(个人)——six
今天的计划:选择功能界面的logo.背景与功能选择框的整体设计组合. 昨天做了什么?优化登录.注册信息的填写判断. 困难:无.
- piral 基于typescript 的微前端开发框架
piral有一个微前端开发框架,功能强大,文档比较全,扩展能力也比较好 包含以下特性: 特性 高度模块化 多框架兼容 支持资源文件的拆分 全局状态管理 独立开发和部署 CLI工具 与同类框架的比较 参 ...
- django -- ORM建表
前戏 ORM(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ORM的优势: ORM解决的主要问题是对象和关系的映射 ...
- 修改ARP缓存表大小
在下发Mininet的ARP缓存表表项时,出现了如下的错误信息: SIOCSARP: No buffer space available 这是由于ARP表是缓存在内存中的,超过了系统对ARP缓存表大小 ...
- rpm续
一.安装源码包 安装源码包通常须要一下三步: (1) ./configure. 这步可以定制功能,加上相应 的选项即可,具体有什么选项可以通过命令./configure help来查看.这一步会 自动 ...
- Jenkins+Docker+Git+Registry
从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布 笔者:@拿着保温瓶的年轻人 目录: 一.前言 二.发布流程 三.环境准备 四.部署思路梳理 五.三台机器上操作 ...
- CUDA C编程入门
最近想用cuda来加速三维重建的算法,就先入门了一下cuda. CUDA C 编程 cuda c时对c/c++进行拓展后形成的变种,兼容c/c++语法,文件类型为'.cu',编译器为nvcc.cuda ...