【Go语言】Beego框架ORM的CRUD操作实现

今天介绍一下Beego 的ORM 操作

Beego 很赞。
Beego中数据库的处理很简答,用beego/orm这个工具就可以了。对于数据库操作主要就是增删查改CURD操作。ORM可以自己建表,我们只需要定义好相关的结构体就好了,然后用相关的函数去注册好就OK。

//定义结构体,名字为表名大写,字段大写,为表的字段
type Book struct {
Name   string
Num    int64 `orm:"pk;auto"` //主键,自动增长
Author string
Price  float32
}

//注册模型
func init() {
//orm.RegisterModelWithPrefix("book_", new(Book))  //带前缀的表
orm.RegisterModel(new(Book)) //不带前缀的表
}

当然最重要是是要引入这个包

"github.com/astaxie/beego/orm"

现在我们来链接数据库。要提供相应的配置参数。

var dbhost string = "localhost:3306" //主机,米有用到( ⊙ o ⊙ )!
var dbuser string = "root"           //数据库用户名
var dbpassword string = ""           //数据库密码
var db string = "ormtest"            //数据库名字

要引入的包是

"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"

初始化数据库

//初始化函数
func init() {
	//注册mysql Driver
	orm.RegisterDriver("mysql", orm.DR_MySQL)
	//构造conn连接
	conn := dbuser + ":" + dbpassword + "@/" + db + "?charset=utf8"
	//注册数据库连接
	orm.RegisterDataBase("default", "mysql", conn)
}

开启自动建表

//自动建表
func createTable() {
	name := "default"                          //数据库别名
	force := false                             //不强制建数据库
	verbose := true                            //打印建表过程
	err := orm.RunSyncdb(name, force, verbose) //建表
	if err != nil {
		beego.Error(err)
	}
}

准备工作做好了现在就来测试,在main()函数中先要初始化一个orm对象,指定使用的数据库,并且执行自动建表

o := orm.NewOrm()  //注册新的orm
	o.Using("dafault") //使用数据库,默认default
	createTable()      //开启自动建表

现在就可以CRUD操作了。
首先是insert

//插入
	//直接构造对象
	var book1 *Book = &Book{Name: "蓝色fasfsaf天空", Price: 30.0, Author: "刘凯宁"}
	//间接构造对象
	var book2 *Book = new(Book)
	book2.Author = "mq"
	book2.Name = "mq111fasf"
	book2.Price = 100.0
	//执行插入,o.Insert()返回的是受影响的id
	fmt.Println(o.Insert(book1))
	fmt.Println(o.Insert(book2))

可以批量插入数据

//批量插入数据
	books := []Book{
		{Name: "lkn1", Price: 10},
		{Name: "lkn5", Price: 122},
		{Name: "lkn3", Price: 3},
		{Name: "lkn22", Price: 12},
		{Name: "lkn2121", Price: 133},
	}
	//插入,第一个参数为要插入的条数
	o.InsertMulti(5, books)
	fmt.Println(books)

然后是read

//读取记录
	book := new(Book)
	//必须要指定主键
	book.Num = 1
	o.Read(book)
	fmt.Println(book)

	//读取记录,如果没有就新建一个,不用指定主键
	book.Author = "qqq"
	o.ReadOrCreate(book, "Author")
	fmt.Println(book)

接下来update

//修改记录,指定主键
	book4 := new(Book)
	book4.Num = 8
	book4.Author = "刘凯宁"
	o.Update(book4, "Author")
	fmt.Println(book4)

最后delete

//删除记录,指定主键
	book3 := new(Book)
	book3.Num = 6
	o.Read(book3)
	fmt.Println(book3)
	o.Delete(book3)

这样就会使用ORM来进行CRUD操作了。
做MVC模式的应用是,数据库这块,就是model这块,主要就是各种数据库的操作,beego中用beego/orm 这个工具很好的完成了各种数据库的操作,简化了SQL语句,并且效率得到了提高。当然可以直接写SQL语句然后去执行,那个以后有机会去介绍吧。关于ORM的使用还有其他的高级应用,敬请期待后面的博客!

刘凯宁@C2P
20140815

Share

【Go语言】Beego Framework 简介

http://beego.me/

Beego Framework
一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架

当现在大多数开发者都热衷于依靠Java 和 PHP的各种 MVC 框架开发 web app 的时候,Golang 在web方面也有强势发展 ,国内Golang 界顶尖的大师  谢大@Astaxie 和无名@Unknow 两人为主开发的  Beego Framework 横空出世,于是 web 开发中Go语言也变得时髦而又标新立异。语言大发展带动着行业的改革,而这种变革终将影响到千千万万的开发者。今天为大家简单介绍一下 beego 。

特性:
1、基于Go语言,不是简单的 web 框架,而是 http 框架。
首先要明确 golang  本身是有很强大的 服务器开发 处理机制的,这就意味着其实我们没有必要用类似于apache 、 nginx 这种的网络服务器,go 的官方包里面直接就有相关的库,你可以轻易的去搭建应用;同时,编译好以后是可执行文件,你完全不需要一些固定环境配置的主机,只要你的服务器上有Go的环境,那么这个应用就能够跑起来,并且具有高并发的特性。想想就有一点小激动呢!

2、MVC模式,简单高效
当今MVC模式已经是开发者必须要有的思考方式了,beego提供了标准的MVC模型实现代码分层和团队分工,同时做好了智能路由处理、错误界面定义、服务器指标监控、自动化测试盒打包等等功能,开发文档详细,QQ交流群也可以随时与@谢大@无名取得联系。附上一个Go web  编程群:259316004    国内顶尖Go语言专家都在,golang 优秀的集成开发环境 LiteIDE 的作者七叶也在,更有七牛CEO许式伟的加盟!别激动,加一点优秀的QQ群,你也会慢慢变得优秀起来!

3、模块化,适合各种应用的开发
beego 有 Session、缓存操作、日志记录、配置解析、性能监控、上下文操作、ORM 模块、请求模拟  八个强大的模块,可以随意搭配组合使用,同时又有一个强大的工具 bee  来快速创建、维护、监控、测试、打包部署你的应用,这样又给基于Golang 的web 开发增加了一丝新的乐趣。

现在就让我们简单上手吧!(*^__^*) 嘻嘻……

step 1 :安装 beego
你可以在下面这个网站上下载源码:http://beego.me/  其实都是要自己去github上面down 一下 code 的。 作为一个开发者 github 的账号一定要有哦!(虽然我不怎么会用但是我有账号(*^__^*) )下载一个  Git 的工具,这是我下载好的,放在七牛上面去了,你可以直接下载:http://liukaining.qiniudn.com/Git-1.9.4-preview20140611.exe  ,安装好以后打开你的Git bash ,在命令行输入:go get github.com/astaxie/beego  这个命令是从github 网站上下载源码,如果你直接按回车的话,有可能就会报出:$GOPATH 路径不存在的错误,这是因为你的Go语言安装的时候默认 $GOPATH  变量是空,解决的方式是在系统环境变量那边新建一个$GOPATH 变量,而这个变量的值是你指定的,以后下载的beego也会到这个路径下面。设置好环境变量以后就可以去下载源码了。如果下载好,你可以将将刚刚指定的路径添加在你的 liteIDE 中,方便管理和创建应用,或者像官网上说的,下载一个bee,来管理你的  beego 。下载指令是 go get github.com/beego/bee 这样。其实这就已经安装好了,下一步我们可以快速建立一个网站。

step 2:Hello World in Beego

新建一个文件:helloworld.go ,代码如下:

package main

import (
“github.com/astaxie/beego”
)

type MainController struct {
beego.Controller
}

func (this *MainController) Get() {
this.Ctx.WriteString(“hello world”)
}

func main() {
beego.Router(“/”, &MainController{})
beego.Run()
}

这份代码来自官网,我自己测试了是可以用的。这时候你就可以打开浏览器,输入 localhost:8080 【当然localhost 可以被自己的IP替换】,你就会发现界面上有一个hellow world  就是这么快!

如果你已经下载好了bee这个强大的东东,那么可以在你的$GOPATH 目录下执行一下三句命令
>bee new hello
>cd hello
>bee run hello 

然后打开浏览器输入 localhost:8080,你的新网站也会搭建好。就是这么快!

step 3:熟悉beego的文件目录,懂得基本原理
这一部分官网上面说的很详细,我也是刚刚接触,等以后慢慢补充哈!


越来越喜欢Golang了!

刘凯宁@C2P
20140725

Share