beego源码分析之orm操作

任何一门服务端语言最终都离不开解决数据的存储问题,所以web框架的核心功能之一是封装db操作库(orm)。beego作为一款流行的go语言web开发框架,其orm操作的封装也值得学习,下面先来看看beego中orm使用。

它主要的步骤是:

1.初始化通过orm.RegisterDataBase注册数据库连接

2.初始化通过orm.RegisterModel注册model

3.使用的时候orm.NewOrm实例化一个数据库对象

4.调用db对象的curd方法

下面来看看在RegisterDataBase方法中做了哪些操作

源码:github.com\astaxie\beego\orm\db_alias.go

RegisterDataBase函数的主要操作:

1.通过数据库配置打开一个mysql连接的句柄sql.Open

2.通过addAliasWthDB把连接的句柄添加进一个连接池中,关键来看看addAliasWthDB函数做了啥。

通过new(alias)实例化一个对象,先开辟一个堆空间,把应用返回给al变量,再后面实例化orm对象的时候使用。alias结构体的定义了数据库连接的基本数据结构:

以上的代码所做的工作简单来说就是读取数据库配置,把配置存到内存的堆中,等待后面用的时候实例化,把堆的地址返回给实例化对象。下面来看看实例化一个数据库操作类的时候orm做了什么。

orm结构体定义:

在实例化orm对象过程中,先通过BootStrap()方法,取出缓存中的model实例,把model中定义的字段跟数据表中的字段进行绑定关联。

实例化orm之后调用了她的Using方法,下面看看Using方法做了哪些事情。

Using方法中,先读取db缓存中的数据,把缓存中db实例化数据赋给orm alias属性,对象的也就是注册的时候写进堆中的alias结构体,结合alias结构体定义,此时的orm对象就可以对前面初始化配置的db调用自己的curd成员方法操作了。

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注