package models
import (
"github.com/astaxie/beego/orm" //引入beego的orm
_ "github.com/go-sql-driver/mysql" //引入beego的mysql驱动
)
//表go_archives的结构
type Archives struct {
Id int
Typeid int
Title string `orm:"size(255)"`
Body string `orm:"size(1000)"`
}
//表go_arctype的结构
type Arctype struct {
Id int
Topid int
Typename string `orm:"size(100)`
Sort int
}
func init() {
orm.RegisterDriver("mysql", orm.DR_MySQL) //注册数据库驱动
orm.RegisterDataBase("default", "mysql", "root:123456@/go?charset=utf8") //注册一个别名为default的数据库
orm.SetMaxIdleConns("default", 30) //设置数据库最大空闲连接
orm.SetMaxOpenConns("default", 30) //设置数据库最大连接数
orm.RegisterModelWithPrefix("go_", new(Archives)) //注册模型并使用表前缀
orm.RegisterModelWithPrefix("go_", new(Arctype)) //注册模型并使用表前缀
}
func (this *Archives) Show() ([]Archives, error) {
o := orm.NewOrm()
var data []Archives
_, err := o.QueryTable("go_archives").Filter("id__gt", 3).All(&data)
return data, err
}
//表go_archives的增加
func (this *Archives) Add(title, body string, typeid int) (int64, error) {
o := orm.NewOrm()
arc := Archives{Title: title, Body: body, Typeid: typeid}
id, err := o.Insert(&arc)
return id, err
}
func (this *Archives) Edit(title, body string, typeid, id int) error {
o := orm.NewOrm()
arc := Archives{Title: title, Body: body, Typeid: typeid, Id: id}
_, err := o.Update(&arc)
return err
}
func (this *Archives) Delete(id int) error {
o := orm.NewOrm()
arc := Archives{Id: id}
_, err := o.Delete(&arc)
return err
}
现在到控制器中看看我们怎么调用模型的方法的实现(增、删、改、查)项目/controllers/test.go
package controllers
import (
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"strconv"
"test/models"
)
type TestController struct {
beego.Controller
}
var arc models.Archives
func (this *TestController) Show() {
data, err := arc.Show()
fmt.Println(data, err)
}
func (this *TestController) Add() {
title := "测试标题"
body := "测试内容"
typeid := 1
id, err := arc.Add(title, body, typeid)
fmt.Println(id, err)
}
func (this *TestController) Edit() {
title := "测试标题"
body := "测试内容"
typeid := 1
id := 1
err := arc.Edit(title, body, typeid, id)
fmt.Println(err)
}
func (this *TestController) Delete() {
id := 1
err := arc.Delete(id)
fmt.Println(err)
}
go的结构很灵活,beego的框架很简单,只要是略懂MVC就行了,关键部分在GO的基础