MybatisPlus最新代码生成器(3.5.1+)使用教程(4)——文件模板解析
作者:互联网
简介
MybatisPlus最新代码生成器(3.5.1+)使用教程(1)——输出路径详细解析
MybatisPlus最新代码生成器(3.5.1+)使用教程(2)——输出文件名详细解析
MybatisPlus最新代码生成器(3.5.1+)使用教程(3)——指定数据库表详细解析
MybatisPlus最新代码生成器(3.5.1+)使用教程(4)——文件模板解析
禁止输出 Service 接口的方法
现在,比如有一个需求点,是6种默认输出文件中,我不想要输出 Service 接口,该怎么办呢?
我们从 execute() 作为切入点开始追踪代码:
-> execute(), com.baomidou.mybatisplus.generator.FastAutoGenerator
-> batchOutput(), com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine
-> outputService(), com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine
以下是 outputService 的源码:
第一种方式,是让 servicePath 为空,即找不到输出路径:
FastAutoGenerator.create("url", "username", "password")
.packageConfig(builder -> builder.pathInfo(Collections.singletonMap(OutputFile.service, "")))
.execute();
第二种方式,如果 getTemplateFilePath 能够返回空,即找不到模板文件:
FastAutoGenerator.create("url", "username", "password")
.templateConfig(builder -> builder.service(""))
.execute();
不过这种方式实际操作时,其实也会影响到 PathInfoHandler,导致不添加默认输出路径,而使得 servicePath 等于 null
第三种方式,让 serviceName 为空,即找不到输出文件名:
FastAutoGenerator.create("url", "username", "password")
.strategyConfig(builder -> builder.serviceBuilder().convertServiceFileName((entityName) -> ""))
.execute();
不过,这三种方式,在输出得到 ServiceImpl 文件时,都会找不到对应的 Service 接口,接下来看看这个问题如何解决。
各模板文件的默认路径
首先,我们要知道 TemplateConfig 的各个属性的默认值:
成员变量 | 默认值 | 描述 |
---|---|---|
entity | /templates/entity.java |
实体模板路径 |
entityKt | /templates/entity.kt |
实体模板路径(kotlin模板) |
controller | /templates/controller.java |
控制器模板路径 |
mapper | /templates/mapper.java |
Mapper模板路径 |
xml | /templates/mapper.xml |
MapperXml模板路径 |
service | /templates/service.java |
Service模板路径 |
serviceImpl | /templates/serviceImpl.java |
ServiceImpl模板路径 |
disableEntity | false | 是否禁用实体模板(默认 false) |
以 ServiceImpl 为例,执行 getTemplateFilePath 方法时:
最终返回值,视语言模板不同而不同:
模板引擎 | 追加后缀 | getTemplateFilePath默认返回值(以serviceImpl为例) |
---|---|---|
VelocityTemplateEngine | .vm | /templates/serviceImpl.java.vm |
FreemarkerTemplateEngine | .ftl | /templates/serviceImpl.java.ftl |
BeetlTemplateEngine | .btl | /templates/serviceImpl.java.btl |
我们可以从 mybatis-plus-generator.jar 的资源文件夹中看到以下默认模板:
修改 ServiceImpl 模板
因此,我们就可以对 ServiceImpl 模板进行一些修改,移除对 Service 的继承:
package ${package.ServiceImpl};
import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
/**
* <p>
* $!{table.comment} 服务实现类
* </p>
*
* @author ${author}
* @since ${date}
*/
@Service
#if(${kotlin})
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>() {
}
#else
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> {
}
#end
并且把这个文件命名为 serviceImpl.java.vm,放在你生成器客户端代码的项目资源中:
标签:templates,代码生成,MybatisPlus,Service,路径,3.5,java,serviceImpl,模板 来源: https://www.cnblogs.com/kendoziyu/p/mybatis-plus_template_explanation.html