「go商城」gin+gorm实现CRUD

Python015

「go商城」gin+gorm实现CRUD,第1张

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

在写sql语句时,where的条件主要是 key=1 and key2=2 或者 key=1 or key2=2 这种形式[还有 and与or 混合]。

认真分析会发现条件有 4部分 组成-- 字段名、操作符、查询值、与前一个条件的关系[and,or] ,这样就很容易实现了。下面就是一个说明,为了简化,其中会默认省略一些特征。

启动项目

访问测试地址:

http://127.0.0.1:8100/api/v1/user/test

带分页的地址: http://127.0.0.1:8100/api/v1/user/list