一、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的更多相关文章

  1. Go语言之高级篇beego框架之Controller

    一.Controller 控制器 Controller等同于Django里的view,处理逻辑都是在Controller里面完成的,下面就写一个最简单的Controller.写controller的时 ...

  2. Go语言之高级篇beego框架安装与使用

    一.beego框架 1.beego框架简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计 ...

  3. Go语言之高级篇beego框架之config、httplib、context

    一.httplib 1.配置文件解析 这是一个用来解析文件的库,它的设计思路来自于 database/sql,目前支持解析的文件格式有 ini.json.xml.yaml,可以通过如下方式进行安装: ...

  4. Go语言之高级篇beego框架之layui框架应用

    1.layui前端框架 参考地址:https://www.layui.com

  5. Go语言之高级篇beego框架之配置beego环境

    1.配置beego环境 进入部署目录中 软件部署目录: 把要部署的软件代码,放在src目录下面. 启动项目

  6. Go语言之高级篇Beego框架之爬虫项目实战

    一.爬虫项目 1.爬虫基础 a.网页上面会有相同的数据 b.去重处理 布隆过滤器哈希存储 c.标签匹配: 正则表达式beautiful soup或lxml这种标签提取库 d.动态内容 phantomj ...

  7. Go语言之高级篇beego框架之view

    1.基本语法 go统一使用了{{ 和 }}作为左右标签,没有其它的标签符号. 如果你想要修改为其它符号,可以修改配置文件. 使用.来访问当前位置的上下文 使用$来引用当前模板根级的上下文 2.使用方法 ...

  8. Go语言之高级篇beego框架之model设计构造查询

    一.model设计构造查询 QueryBuilder 提供了一个简便,流畅的 SQL 查询构造器.在不影响代码可读性的前提下用来快速的建立 SQL 语句. QueryBuilder 在功能上与 ORM ...

  9. Go语言之高级篇beego框架之模型(Models)

    一.模型(Models) 1.beego-orm的相关特性 支持 Go 的所有类型存储 -轻松上手,采用简单的 CRUD 风格 -自动 Join 关联表 跨数据库兼容查询 允许直接使用 SQL 查询/ ...

随机推荐

  1. Office系列版本安装包下载

    链接:http://pan.baidu.com/s/1i4UFZOp  密码:f9y8 链接:http://pan.baidu.com/s/1i4YJN4D 密码:743q 链接:http://pan ...

  2. python易错题之lambda 以及 for循环中内嵌函数

    li = [] for x in range(10): print(x) //在函数没有执行前(li[0]()),for 循环中x已经执行完,x会一直为 9 def fun(): print(x) / ...

  3. html中hr的各种样式使用

    第一种: <hr style=" height:2px;border:none;border-top:2px dotted #185598;" /> height:2p ...

  4. 解决Delphi7的自带的UTF-8编码转换函数BUG

    Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del ...

  5. thinkphp实现附件上传

    先需要制定图片上传的目录 然后用uploadOne方法保存 有的时候需要缩略图,比如文章的封面图片 $config=array( 'rootPath' => './Application/Pub ...

  6. zprofiler三板斧解决cpu占用率过高问题

    zprofiler三板斧解决cpu占用率过高问题  九居 浏览 171 2015-04-08 14:11:58 发表于:JVM性能与调试平台   zprofiler   上周五碰到了一个线上机器cpu ...

  7. kuangbin 区间dp

    A - Cake 题目大意:给你一个n个顶点(n<=100)的多边形和每两个点连边的消耗,让你求把这个多边形全部切成三角形所需要的最小消耗,如果这个多边形为凹多边形则输出无解. 思路:先求一个凸 ...

  8. P3819 松江1843路

    P3819 松江1843路sigema(r[i]*abs(x[i]-x[s]));令它最小,是带权中位数问题,s是带权中位数,s左边的r[i]之和+r[s]大于s左边的r[i]之和,反过来也成立.如果 ...

  9. MXNet 中的 hybird_forward 的一个使用技巧

    from mxnet.gluon import nn from mxnet import nd class SliceLike(nn.HybridBlock): def __init__(self, ...

  10. mysql5.7一键安装脚本

    0. 概述 最近鼓捣出了一个mysql安装脚本,将该脚本,mysql的my.cnf文件,mysql的安装包这三个文件放在同一个目录下面,执行sh mysql-auto-install.sh就可以完成m ...