1 数据库访问方法
早期的ODBC类型的访问类型。对不同的数据库的访问,针对不同的语言都有对应的数据库访问驱动,比较流行的就是odbc(Open Database Connectivity)开放数据库连接了。在这种方式的访问中,就需要开发人员编写访问的sql语句,所以可以理解为这是个解析执行sql的引擎。
面向对象思维的ORM。然后发展到后来有了ORM(Object Relational Mapping)对象关系映射,对象关系映射是以面相对象的思维对数据库表的访问,对每个表映射为一个内存中的对象,对列映射程属性,对SQL操作映射为对应的方法。
两者的主要思路区别。面向对象的思维和SQL的思维还是有很大的不同的,面向对象的思维比较好理解,就是把数据库表类比为面向对象的类和对象,将数据库的列类比为类的属性定义,SQL中的增删改查类比为类和对象的方法访问。而SQL本身的思维是集合,对集合有各种操作,然后再结合SQL执行的顺序进行,就可以对集合进行帅选查找统计等操作。
下面咱们先先来看下go的XORM框架的例子。
2 XORM框架的例子和执行
主函数方法例子源码如下,xorm支持SQL访问方式,也支持对象映射方式。
xorm对应mysql的初始化方法定义。
运行结果
3 XORM的使用和模块定义
3.1 表结构体定义
这里主要是针对表映射关系的结构体定义,包含表列字段的类型和go语言的类型映射关系等。

4.2 数据的创建created
type User struct {
Id int64
Name string
CreatedAt time.Time `xorm:"created"`
}
4.3 数据的访问
数据读取访问方法:
Get方法:可以通过Get方法,调用Get方法时根据需要传入一个对应结构体类型的地址,同时结构体中的非空的字段自动成为查询的条件和前面的方法条件组合在一起进行查询。
Exist方法:用来判断判断某个记录在数据库表是否存在。
Find方法:查询多条数据使用。
Find方法的第一个参数为slice的指针或Map指针,即为查询后返回的结果,第二个参数可选,为查询的条件struct的指针。
Join方法:对应SQL中数据库中的连接操作,支持INNER, LEFT OUTER, CROSS中的一个值。
数据的插入和修改:
Insert方法:结合定义的结构体进行数据的插入,支持一条和多条。
Update方法:结合定义的结构体进行数据的更新,支持一条和多条。
Delete方法:结合结构体进行数据的删除,支持一条和多条,删除必须带条件Where方法。
5 相关的数据库驱动支持
以下驱动都可以在开源库中查询到。Mysql,MyMysql,Postres,Tidb,SQLite,MsSql,Oracle。
网友评论