使用MybatisPlus的AutoGenerator生成代码
这个可自行官网查看,或者搜索引擎查一下一大堆可以参考的,这里就不过多叙述。
模版中能获取到哪些信息
官方没有给出在自定义模版中你能获取到哪些信息来生成你想要的代码,所以本人就看了一下源码,能获取到的信息都在com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine类的getObjectMap方法中
,如下:
/**
* <p>
* 渲染对象 MAP 信息
* </p>
*
* @param tableInfo 表信息对象
* @return
*/
public Map<String, Object> getObjectMap(TableInfo tableInfo) {
Map<String, Object> objectMap = new HashMap<>();
ConfigBuilder config = this.getConfigBuilder();
if (config.getStrategyConfig().isControllerMappingHyphenStyle()) {
objectMap.put("controllerMappingHyphenStyle", config.getStrategyConfig().isControllerMappingHyphenStyle());
objectMap.put("controllerMappingHyphen", StringUtils.camelToHyphen(tableInfo.getEntityPath()));
}
objectMap.put("restControllerStyle", config.getStrategyConfig().isRestControllerStyle());
objectMap.put("package", config.getPackageInfo());
GlobalConfig globalConfig = config.getGlobalConfig();
objectMap.put("author", globalConfig.getAuthor());
objectMap.put("idType", globalConfig.getIdType() == null ? null : globalConfig.getIdType().toString());
objectMap.put("logicDeleteFieldName", config.getStrategyConfig().getLogicDeleteFieldName());
objectMap.put("versionFieldName", config.getStrategyConfig().getVersionFieldName());
objectMap.put("activeRecord", globalConfig.isActiveRecord());
objectMap.put("kotlin", globalConfig.isKotlin());
objectMap.put("date", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
objectMap.put("table", tableInfo);
objectMap.put("enableCache", globalConfig.isEnableCache());
objectMap.put("baseResultMap", globalConfig.isBaseResultMap());
objectMap.put("baseColumnList", globalConfig.isBaseColumnList());
objectMap.put("entity", tableInfo.getEntityName());
objectMap.put("entityColumnConstant", config.getStrategyConfig().isEntityColumnConstant());
objectMap.put("entityBuilderModel", config.getStrategyConfig().isEntityBuilderModel());
objectMap.put("entityLombokModel", config.getStrategyConfig().isEntityLombokModel());
objectMap.put("entityBooleanColumnRemoveIsPrefix", config.getStrategyConfig().isEntityBooleanColumnRemoveIsPrefix());
objectMap.put("superEntityClass", this.getSuperClassName(config.getSuperEntityClass()));
objectMap.put("superMapperClassPackage", config.getSuperMapperClass());
objectMap.put("superMapperClass", this.getSuperClassName(config.getSuperMapperClass()));
objectMap.put("superServiceClassPackage", config.getSuperServiceClass());
objectMap.put("superServiceClass", this.getSuperClassName(config.getSuperServiceClass()));
objectMap.put("superServiceImplClassPackage", config.getSuperServiceImplClass());
objectMap.put("superServiceImplClass", this.getSuperClassName(config.getSuperServiceImplClass()));
objectMap.put("superControllerClassPackage", config.getSuperControllerClass());
objectMap.put("superControllerClass", this.getSuperClassName(config.getSuperControllerClass()));
return objectMap;
}
下面我就顺便整理一下方便以后查看
属性 | 类型 | 描述 | 示例 |
---|---|---|---|
controllerMappingHyphenStyle | boolean | controllerMapping是否为连字符形式 | 驼峰:@RequestMapping("/managerUserActionHistory") 连字符:@RequestMapping("/manager-user-action-history") |
controllerMappingHyphen | String | 实体类的连字符形式 | manager-user-action-history |
restControllerStyle | boolean | 是否为RestController模式 | |
package | Map | 所有包配置信息 | |
package.Entity | String | Entity所在包路径 | com.geek.sean.test.model |
package.Mapper | String | Mapper所在包路径 | com.geek.sean.test.mapper |
package.Xml | String | Mapper的xml文件所在包路径 | com.geek.sean.test.mapper.xml |
package.ServiceImpl | String | Service实现类所在包路径 | com.geek.sean.test.service.impl |
package.Service | String | Service所在包路径 | com.geek.sean.test.service |
package.Controller | String | Controller所在包路径 | com.geek.sean.test.controller |
author | String | GlobalConfig中配置的author | |
idType | String | GlobalConfig中配置的idType | |
logicDeleteFieldName | String | 策略配置项中配置的逻辑删除属性名称 | |
versionFieldName | String | 策略配置项中配置的乐观锁属性名称 | |
activeRecord | boolean | 是否开启ActiveRecord模式 | |
kotlin | boolean | 是否开启 Kotlin 模式 | |
date | String | 当前日期(yyyy-MM-dd) | 2019-07-09 |
table | TableInfo | 表信息,关联到当前字段信息 | |
table.name | String | 表名 | 例:sys_user |
table.comment | String | 表描述 | 用户信息表 |
table.entityName | String | 实体类名称 | SysUser |
table.mapperName | String | Mapper类名 | SysUserMapper |
table.xmlName | String | Mapper对应的xml名称 | SysUserMapper |
table.serviceName | String | Service名称 | SysUserService |
table.serviceImplName | String | Service实现类名称 | SysUserServiceImpl |
table.controllerName | String | Controller名称 | SysUserController |
table.fields | List<TableField> | 字段信息集合 | |
table.fields[n].name | String | 字段名称 | user_id |
table.fields[n].type | String | 字段类型 | int(11)、varchar(64)、timestamp、char(1) |
table.fields[n].propertyName | String | 属性名 | userId、userName |
table.fields[n].columnType | String | 属性类型 | String、Integer |
table.fields[n].comment | String | 字段描述 | 用户名 |
table.importPackages | List<String> | 引入包集合 | [‘com.baomidou.mybatisplus.enums.IdType’,‘java.util.Date’] |
table.fieldNames | String | 表字段名,逗号分隔 | user_id, user_name, password |
enableCache | boolean | 是否在xml中添加二级缓存配置 | |
baseResultMap | boolean | 是否开启 BaseResultMap | |
baseColumnList | boolean | 是否开启 baseColumnList | |
entity | String | Entity类名 | |
entityColumnConstant | boolean | 【实体】是否生成字段常量(默认 false) | |
entityBuilderModel | boolean | 【实体】是否为构建者模型(默认 false) | |
entityLombokModel | boolean | 【实体】是否为lombok模型(默认 false) | |
entityBooleanColumnRemoveIsPrefix | boolean | Boolean类型字段是否移除is前缀(默认 false) | 比如 : 数据库字段名称 : ‘is_xxx’,类型为 : tinyint. 在映射实体的时候则会去掉is,在实体类中映射最终结果为 xxx |
superEntityClass | String | Entity父类 | BaseEntity |
superMapperClassPackage | String | Mapper父类包路径 | com.baomidou.mybatisplus.mapper.BaseMapper |
superMapperClass | String | Mapper父类 | BaseMapper |
superServiceClassPackage | String | Service父类包路径 | com.baomidou.mybatisplus.service.IService |
superServiceClass | String | Service父类 | IService |
superServiceImplClassPackage | String | Service实现类父类包路径 | com.baomidou.mybatisplus.service.impl.ServiceImpl |
superServiceImplClass | String | Service实现类父类 | ServiceImpl |
superControllerClassPackage | String | Controller类父类包路径 | |
superControllerClass | String | Controller父类 |
总结了一上午,个别字段没有放上,自己用到时候可以再去源码看看,希望可以让各位读者有所收获