R 代表Relation 即关系
M 代表Mapping 即映射
ORM即 对象关系映射
通过ORM工具,将对象与关系数据库 联系起来
orm工具 会动态生成sql语句,使你用面向对象的语法即可完成对数据库的操作
.net中名气比较大的orm工具有
NHibernate,Linq2Sql,EntityFrameWork等等
希望能够对你有帮助
比如 我们要从数据库中 选取一条用户信息
sql中 我们这样写 select * form user where userId= 1
而在NHibernate中 用hbl可以写为
from User u where u.UserId=1
即可获得一个User对象 “注意是User对象”
虽然hbl的语法还不能说很面向对象 但是已经比sql进步了 再来看看用linq的语法
from u in User where u.UserId = 1 select u
也可以返回一个User对象 但是语法上要比hbl更面向对象。
ORM-Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了
GORM就是go语言实现的一个ORM库
特点:
增加(Create)
检索(Retrieve)
更新(Update)
删除(Delete)
如果模型中有 DeletedAt 字段,它将自动拥有软删除的能力!当执行删除操作时,数据并不会永久的从数据库中删除,而是将 DeletedAt 的值更新为当前时间。
具体的使用可查看gorm 官方文档
在项目中我们定义一个全局的GVA_DB,方便使用时调用
后续我们在需要查询数据库时便可直接通过global.GVA_DB使用
比如创建商品信息:
我们先通过查询分类是否存在,然后再创建商品
通过gorm的链式操作可以很方便的进行crud操作
分页查询是项目中经常使用到的功能,当指定条件查询的数据量过大时,如果我们将数据一次性返回,会对数据库造成较大的负荷,同时降低接口的性能,通常我们会使用分页查询的方式让数据进行分段展示,从而保障接口的性能。在gorm中我们实用Offset,和Count来实现分页
我们通过前端的传递过来的分页数据进行查询
该商城作为gin的学习项目,没有很复杂的逻辑,所有业务逻辑均通过Mysql实现。包括后面将要介绍的登录态,也是如此。
所有代码已上传github,有兴趣的可以访问https://github.com/newbee-ltd/newbee-mall-api-go/,如果有更好的建议也欢迎提交issure,pr
ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有三种:Hibernate,iBATIS,EclipseLink。