目录
在日常工作中主要用的是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框架:
上一篇文章已经详细介绍过了,如果不了解可以看看这个
1.3.glus框架
Gorm-Plus是Gorm的增强工具,它在保持Gorm原有特性的基础上,为开发者提供了开箱即用的增强功能。通过简化开发流程、提高效率,它为开发者带来了无与伦比的开发体验。如果您渴望尝试一款让开发变得轻松而高效的工具,Gorm-Plus将是您不可错过的选择。
其实就是把Mybatis-plus的那套语法借鉴了一下。(好吧,就是抄他的)
Mybatis-plus对于单表操作提供了非常多的CRUD操作
用go1.18出的泛型也可以实现这些方法,本来我还准备自己琢磨写一套的,突然有一天在github上面看见有人已经写了,那我这里就直接拿来用了(好吧,就是懒)。
总结来说就是一句话:
他山之石,可以攻玉
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字段,维护起来非常麻烦
</