一、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. 深入浅出JavaScript之闭包(Closure)

    闭包(closure)是掌握Javascript从人门到深入一个非常重要的门槛,它是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面写下我的学习笔记~ 闭包-无处不 ...

  2. Usual tiny skills & solutions

    Ubuntu and Win10 - double OS 2016-02-21 Yesterday I helped my friend install Ubuntu (14.04 LTS) on h ...

  3. JavaScript数组排序

    JavaScript的sort方法排序是有问题的,我们可以给sort方法传一个参数 function Compare(value1, value2) { //数字排序的函数参数 if (value1 ...

  4. 解决ehcache的UpdateChecker问题

    问题描述 项目中用了ssh框架,每次启动tomcat的时候都特别慢,会在这样一句话下面停留很久 [2016-01-08 23:55:51,517 INFO UpdateChecker.java:doC ...

  5. 【Android 应用开发】Android开发 使用 adb logcat 显示 Android 日志

    作者 : 万境绝尘  转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 ...

  6. Vue proxyTable 解决开发环境的跨域问题

    在 config/index.js 配置文件中,添加 dev: { proxyTable: { '/ssp/withdraw': { target: 'http://dev.home.phiwifi. ...

  7. modified: xxx(modified content, untracked content)

    当运行git status的时候提示如下: modified: xxx(modified content, untracked content) 我们会很本能的直接执行 add .commit .pu ...

  8. libevent源码分析:evmap_io_active_函数

    evmap_io_active_函数用于将激活指定文件描述符上的事件 void evmap_io_active_(struct event_base *base, evutil_socket_t fd ...

  9. php入门之数据类型

    String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值),资源. 返回类型 getType ...

  10. MySQL 删除数据库的两种方法

    使用 mysqladmin 删除数据库 使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库. 所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 ...