go基于go-zero+gorm+gplus实现优雅操作数据库

目录

1.使用框架介绍

1.1go-zero框架:

1.2.gorm框架:

1.3.glus框架

 2.使用

2.1go-zero结合gorm

2.2使用gplus框架

2.2.1创建

2.2.2查询

2.2.1根据id查询

2.2..2根据ids查询

2.2.3条件查询单个分类

2.2..4 条件查询列表

2.2.5查询总条数

2.2.6分页查询数据

2.2.7查询数据是否存在

2.2.8根据泛型返回数据

2.3更新

2.3.1根据id更新记录

2.3.2 选择字段更新

2.3.3 忽略字段更新

2.3.4 根据条件更新

2.4 删除

2.4.1 根据id删除

2.4.2 根据多个id删除

2.4.3 根据条件删除

3.总结


在日常工作中主要用的是go-zero框架,虽然go-zero框架提供了访问数据库的sqlc和sqlx包,提供了最基本的增删改查方法,但是没有mybatis-plus那种操作单表的方法,所以要不停写sql,例如:查询分页,逻辑删除,修改单个信息,批量删除.....等等,十分繁琐,还有大量重复代码,十分不利于维护,虽然后面用到了go-zero结合gorm框架,但是还是会有各种条件查询都需要开发手动来拼接字符串,如果项目比较大的话,就会看到漫天飞的SQL字段,维护起来非常麻烦。所以就想基于go的框架实现mybatis-plus框架那样的功能。

1.使用框架介绍

1.1go-zero框架:

go-zero 是有圈内大佬万俊峰开发的,七牛云技术副总裁。go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验(千万日活)。

官方文档:框架概述 | go-zero Documentation

1.2.gorm框架:

上一篇文章已经详细介绍过了,如果不了解可以看看这个

gorm框架学习-CSDN博客

1.3.glus框架

Gorm-Plus是Gorm的增强工具,它在保持Gorm原有特性的基础上,为开发者提供了开箱即用的增强功能。通过简化开发流程、提高效率,它为开发者带来了无与伦比的开发体验。如果您渴望尝试一款让开发变得轻松而高效的工具,Gorm-Plus将是您不可错过的选择。

其实就是把Mybatis-plus的那套语法借鉴了一下。(好吧,就是抄他的)

Mybatis-plus对于单表操作提供了非常多的CRUD操作

用go1.18出的泛型也可以实现这些方法,本来我还准备自己琢磨写一套的,突然有一天在github上面看见有人已经写了,那我这里就直接拿来用了(好吧,就是懒)。

总结来说就是一句话:

他山之石,可以攻玉

项目地址:GitHub - acmestack/gorm-plus: Gorm-plus是基于Gorm的增强版,类似Mybatis-plus语法。Gorm-plus is based on an enhanced version of Gorm, similar to Mybatis-plus syntax.

 2.使用

2.1go-zero结合gorm

首先创建项目

注意,需要安装go-zero框架的工具 goctl和go的开发环境

在idea中创建go项目,创建godemo文件夹,然后创建godemo.api文件

执行命令

goctl api go -api mingcheng.api -dir .

生成的项目结构如下

导入所需要的依赖

go get github.com/acmestack/gorm-plus
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

增加配置文件

需要注意的是 config包定义的变量要和配置文件一一对应

然后在svc下的servicecontext.go中创建数据库连接,相当于注册数据库连接对象。

然后在logic层编写业务代码

例如我们现在写一个根据名称查询数据的例子

我们可以看见数据已经被查出来了,但是问题就是:

但是还是会有各种条件查询都需要开发手动来拼接字符串,如果项目比较大的话,就会看到漫天飞的SQL字段,维护起来非常麻烦

</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值