GoZero微服务个人探究之路(八)-[mysql数据库]如何拓展由goctl生成的model代码里的方法

前言

goctl生成的方法只有四个:

insert,update,findone,delete,

事实上很多时候这是不够用的,同时生成的这四个方法也很简单,业务逻辑一复杂就做不了了,需要我们自己去实现自己想要的方法

如何实现

goctl生成的model代码有2个:

xxxxxmodel_gen.go

xxxxxmodel.go

打开后缀gen的go文件,我们发现上面有提示,不要编辑这个文件,而另外一个go文件没有这个提示

事实上gen后缀的go文件是四个生成的方法的实现,我们只需要对model后缀代码进行修改


这里我们就增加一个findAll的方法,获取表内全部数据

流程如下:

定义customxxxxxmodel接口,在接口内新增自定义方法FindAll

GoZero微服务个人探究之路(八)-[mysql数据库]如何拓展由goctl生成的model代码里的方法_第1张图片

然后去实现customxxxxModel添加的新方法

GoZero微服务个人探究之路(八)-[mysql数据库]如何拓展由goctl生成的model代码里的方法_第2张图片

其实我们可以发现,goctl的逻辑是defaultxxxmodel包含了生成的四个方法,而customxxxmodel是包含defaultxxxmodel的,我们只需要为custom增加方法并实现就可以不影响goctl的添加我们自己的业务逻辑代码了

后面该怎么用

  1. 在serviceCtx结构体添加对应model,并在NewServiceContext里面正确返回实例
  2. 在logic代码调用svcCtx的实例我们自定义的方法

你可能感兴趣的:(数据库)