【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