Go语言之高级篇beego框架之controller调用model
一、controller调用model
开发规范,就该把对数据库的操作写在model文件夹中。
示例:
views/main.go
package main import (
_ "web/routers"
"github.com/astaxie/beego"
) func main() {
beego.Run()
}
routers/router.go
package routers import (
"web/controllers"
"github.com/astaxie/beego"
) func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/test_model", &controllers.TestModelController{}, "get:Get;post:Post")
}
models/user.go
package models import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
) //由于model这个名字叫 UserInfo 那么操作的表其实 user_info
type UserInfo struct {
Id int64
Username string
Password string
} func init() {
orm.Debug = true // 是否开启调试模式 调试模式下会打印出sql语句
orm.RegisterDataBase("default", "mysql", "root:qwe!23@tcp(127.0.0.1:3306)/test?charset=utf8", 30)
orm.RegisterModel(new(UserInfo))
} func AddUser(user_info *UserInfo) (int64, error) {
o := orm.NewOrm()
id, err := o.Insert(user_info)
return id, err
}
在controllers中调用models
controllers/testModel.go
package controllers import (
"web/models" "github.com/astaxie/beego"
) type TestModelController struct {
beego.Controller
} func (c *TestModelController) Get() {
user := models.UserInfo{Username: "jojo", Password: "123456"}
models.AddUser(&user) c.Ctx.WriteString("call model success!")
}
执行结果:
http://127.0.0.1:8080/test_model
返回结果:
call model success!
查看数据库中是否插入成功。
mysql> select * from user_info;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | nulige | 123456 |
| 2 | jojo | 123456 |
+----+----------+----------+
2 rows in set (0.00 sec)
示例2:全局连接实例
models/user.go
package models import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
) //全局连接实例
var (
db orm.Ormer
) //由于model这个名字叫 UserInfo 那么操作的表其实 user_info
type UserInfo struct {
Id int64
Username string
Password string
} //实例
func init() {
orm.Debug = true // 是否开启调试模式 调试模式下会打印出sql语句
orm.RegisterDataBase("default", "mysql", "root:qwe!23@tcp(127.0.0.1:3306)/test?charset=utf8", 30)
orm.RegisterModel(new(UserInfo))
db = orm.NewOrm()
} //方法
func AddUser(user_info *UserInfo) (int64, error) {
id, err := db.Insert(user_info)
return id, err
}
controllers/testModel.go
package controllers import (
"web/models" "github.com/astaxie/beego"
) type TestModelController struct {
beego.Controller
} func (c *TestModelController) Get() {
user := models.UserInfo{Username: "limei", Password: "123456"}
models.AddUser(&user) c.Ctx.WriteString("call model success!")
}
#执行结果:
http://127.0.0.1:8080/test_model call model success!
检查数据库是否插入成功
mysql> select * from user_info;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | nulige | 123456 |
| 2 | jojo | 123456 |
| 3 | limei | 123456 |
+----+----------+----------+
3 rows in set (0.00 sec)
Go语言之高级篇beego框架之controller调用model的更多相关文章
- Go语言之高级篇beego框架之Controller
一.Controller 控制器 Controller等同于Django里的view,处理逻辑都是在Controller里面完成的,下面就写一个最简单的Controller.写controller的时 ...
- Go语言之高级篇beego框架安装与使用
一.beego框架 1.beego框架简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计 ...
- Go语言之高级篇beego框架之config、httplib、context
一.httplib 1.配置文件解析 这是一个用来解析文件的库,它的设计思路来自于 database/sql,目前支持解析的文件格式有 ini.json.xml.yaml,可以通过如下方式进行安装: ...
- Go语言之高级篇beego框架之layui框架应用
1.layui前端框架 参考地址:https://www.layui.com
- Go语言之高级篇beego框架之配置beego环境
1.配置beego环境 进入部署目录中 软件部署目录: 把要部署的软件代码,放在src目录下面. 启动项目
- Go语言之高级篇Beego框架之爬虫项目实战
一.爬虫项目 1.爬虫基础 a.网页上面会有相同的数据 b.去重处理 布隆过滤器哈希存储 c.标签匹配: 正则表达式beautiful soup或lxml这种标签提取库 d.动态内容 phantomj ...
- Go语言之高级篇beego框架之view
1.基本语法 go统一使用了{{ 和 }}作为左右标签,没有其它的标签符号. 如果你想要修改为其它符号,可以修改配置文件. 使用.来访问当前位置的上下文 使用$来引用当前模板根级的上下文 2.使用方法 ...
- Go语言之高级篇beego框架之model设计构造查询
一.model设计构造查询 QueryBuilder 提供了一个简便,流畅的 SQL 查询构造器.在不影响代码可读性的前提下用来快速的建立 SQL 语句. QueryBuilder 在功能上与 ORM ...
- Go语言之高级篇beego框架之模型(Models)
一.模型(Models) 1.beego-orm的相关特性 支持 Go 的所有类型存储 -轻松上手,采用简单的 CRUD 风格 -自动 Join 关联表 跨数据库兼容查询 允许直接使用 SQL 查询/ ...
随机推荐
- input text 去掉标签下拉提示
autocomplete 属性 autocomplete 属性规定输入字段是否应该启用自动完成功能. 自动完成允许浏览器预测对字段的输入.当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在 ...
- Linear Algebra(未完待续)
[矩阵消元] The result of multiplying a matrix by some vector is a combination of the columns of the matr ...
- Codeforces 5C Longest Regular Bracket Sequence(DP+括号匹配)
题目链接:http://codeforces.com/problemset/problem/5/C 题目大意:给出一串字符串只有'('和')',求出符合括号匹配规则的最大字串长度及该长度的字串出现的次 ...
- bzoj3224 splay板子
开始学习新知识:splay——tree 是个板子题,学习splay可以看博客 https://blog.csdn.net/Clove_unique/article/details/50630280 # ...
- SPLAY,LCT学习笔记(六)
这应该暂时是个终结篇了... 最后在这里讨论LCT的一个常用操作:维护虚子树信息 这也是一个常用操作 下面我们看一下如何来维护 以下内容转自https://blog.csdn.net/neither_ ...
- python 全栈开发,Day122(人工智能初识,百度AI)
一.人工智能初识 什么是智能? 我们通常把人成为智慧生物,那么”智慧生物的能力”就是所谓的”智能”我们有什么能力?听,说,看,理解,思考,情感等等 什么是人工智能? 顾名思义就是由人创造的”智慧能力” ...
- 2017-2018-2 20155309 南皓芯 Exp5 MSF基础应用
实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; 1.2 一个针对浏览器的攻击,如ms11_05 ...
- linux shell cat 命令
cat:查看文件的内容.连接文件.创建一个或多个文件和重定向输出到终端或文件 用法:cat [选项] [文件] 1. $ cat hello.txt 显示hello.txt文本文件中的内容 2. $ ...
- POJ 2318 TOYS (叉乘判断)
<题目链接> 题目大意: 给出矩形4个点和n个挡板俩顶点的位置,这n个挡板将该矩形分成 n+1块区域,再给你m个点的坐标,然你输出每个区域内有几个点. 解题思路: 用叉乘即可简单判断点与直 ...
- 004.Kickstart部署之FTP架构
一 准备 1.1 完整架构:Kickstart+DHCP+VSFTP+TFTP+PXE 1.2 组件应用 Kickstart服务端IP:172.24.8.12 DHCP:提供客户端IP,网关,镜像路径 ...