网站维护工程师,网站平台建设保密协议,网站源码怎么做,网站更改备案信息吗正常的代码生成这里就不介绍了。旨在记录实现如下功能#xff1a; 分布式微服务环境下#xff0c;生成的entity、dto、vo、feignClient等等api模块#xff0c;需要和mapper、service、controller等等分在不同的目录生成。 为什么会出现这个需求#xff1f; mybatis-plus 分布式微服务环境下生成的entity、dto、vo、feignClient等等api模块需要和mapper、service、controller等等分在不同的目录生成。 为什么会出现这个需求 mybatis-plus3.5.3.1提供的全局配置outputDir该方法是entity、mapper、service、controller的文件输出目录。 如上需要将entity和其他三个区分到不同的目录。 查看源码com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine
/*** 输出实体文件** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputEntity(TableInfo tableInfo, MapString, Object objectMap) {}/*** 输出Mapper文件(含xml)** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputMapper(TableInfo tableInfo, MapString, Object objectMap) {}/*** 输出service文件** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputService(TableInfo tableInfo, MapString, Object objectMap) {}/*** 输出controller文件** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputController(TableInfo tableInfo, MapString, Object objectMap) {}一般都会集成自定义的文件生成使用模板一般的选择就是
上述的4个engine也就是继承了AbstractTemplateEngine可根据自己选择的模板再次集成重写这4个方法outputEntity outputMapper outputService outputController 方法内部不需要执行相关代码 输出的逻辑放在outputCustomFile方法内即可
源码
AllArgsConstructor
public class ByTemplateEngine extends BeetlTemplateEngine {private String apiOutputDir;private String serverOutputDir;Overrideprotected void outputCustomFile(ListCustomFile customFiles, TableInfo tableInfo, MapString, Object objectMap) {String packageName String.valueOf(objectMap.get(packageName));String entityName String.valueOf(objectMap.get(entityName));customFiles.forEach(customFile - {String key customFile.getFileName();String value customFile.getTemplatePath();String outputPath getPathInfo(OutputFile.parent);objectMap.put(entityKey, entityNameLower);if (StringUtil.equals(key, controller.java)) {outputPath serverOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH controller StringPool.SLASH entityName Controller StringPool.DOT_JAVA;}if (StringUtil.equals(key, entity.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH entity StringPool.SLASH entityName Entity StringPool.DOT_JAVA;}if (StringUtil.equals(key, mapper.java)) {outputPath serverOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH mapper StringPool.SLASH entityName Mapper StringPool.DOT_JAVA;}if (StringUtil.equals(key, mapper.xml)) {outputPath serverOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH mapper StringPool.SLASH entityName Mapper StringPool.DOT_XML;}if (StringUtil.equals(key, service.java)) {outputPath serverOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH service StringPool.SLASH I entityName Service StringPool.DOT_JAVA;}if (StringUtil.equals(key, serviceImpl.java)) {outputPath serverOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH service StringPool.SLASH impl StringPool.SLASH entityName ServiceImpl StringPool.DOT_JAVA;}if (StringUtil.equals(key, entityVO.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH vo StringPool.SLASH entityName VO StringPool.DOT_JAVA;}if (StringUtil.equals(key, entityDTO.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH dto StringPool.SLASH entityName DTO StringPool.DOT_JAVA;}if (StringUtil.equals(key, entityExcel.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH excel StringPool.SLASH entityName Excel StringPool.DOT_JAVA;}if (StringUtil.equals(key, wrapper.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH wrapper StringPool.SLASH entityName Wrapper StringPool.DOT_JAVA;}if (StringUtil.equals(key, feign.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH feign StringPool.SLASH I entityName Client StringPool.DOT_JAVA;}if (StringUtil.equals(key, feignclient.java)) {outputPath serverOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH feign StringPool.SLASH entityName Client StringPool.DOT_JAVA;}if (StringUtil.equals(key, feignclientFallback.java)) {outputPath apiOutputDir StringPool.SLASH packageName.replace(StringPool.DOT, StringPool.SLASH) StringPool.SLASH feign StringPool.SLASH entityName ClientFallback StringPool.DOT_JAVA;}outputFile(new File(String.valueOf(outputPath)), objectMap, value, Boolean.TRUE);});}/*** 输出实体文件** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputEntity(TableInfo tableInfo, MapString, Object objectMap) {}/*** 输出Mapper文件(含xml)** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputMapper(TableInfo tableInfo, MapString, Object objectMap) {}/*** 输出service文件** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputService(TableInfo tableInfo, MapString, Object objectMap) {}/*** 输出controller文件** param tableInfo 表信息* param objectMap 渲染数据* since 3.5.0*/Overrideprotected void outputController(TableInfo tableInfo, MapString, Object objectMap) {}
}