请问什么叫ORM映射啊?

Python013

请问什么叫ORM映射啊?,第1张

O 代表Object 即对象

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。