zoukankan      html  css  js  c++  java
  • 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)
    

      

  • 相关阅读:
    【转载】Android应用框架及常用工具类总结
    【Android】Android开发规范的一点小体会
    【Android】解决Android的ListView控件滚动时背景变黑
    【Android】侧边栏SlidingMenu
    【Android】解决RadioButton+FragmentPagerAdapter+Fragment切换页面数据加载的问题
    【Android】ListView动态视图显示不全
    Android编码规范
    【Android】两个日期相差几天和两个日期比较大小
    Linux基础之快照克隆、Xshell优化、Linux历史
    Android APP打包时,出错:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic)
  • 原文地址:https://www.cnblogs.com/nulige/p/10373649.html
Copyright © 2011-2022 走看看