在掘金看過 @SnailClimb 《回顧一下MyBatis逆向工程——自動生成代碼》,也嘗試了一下,確實能生成,不過他是使用mybatis.generator來逆向生成的,並且好像mybatis.generator只能生成mapper和mapper xml文件,相似controller、entity、service就生成不了,這樣咱們的工做量仍是挺大的,本身找了一些資料,查了mybatis-plus能夠生成controller、service、entity這類,因此仍是比較全的,本身就寫篇博客記錄一下。
apache
首先加入所需的jar包(這裏還使用到了velocity模板引擎):緩存
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>複製代碼
接下來就是逆向工程的主要代碼了:bash
1.配置數據源:mybatis
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName(DRIVER);
dsc.setUrl(DATA_URL);
dsc.setUsername(USERNAME);
dsc.setPassword(PASSWORD);複製代碼
2.設置一些全局的配置:app
GlobalConfig gc = new GlobalConfig();
gc.setOutputDir(ROOT_DIR);
gc.setFileOverride(true);
gc.setActiveRecord(true);
gc.setEnableCache(false);// XML 二級緩存
gc.setBaseResultMap(true);// XML ResultMap
gc.setBaseColumnList(true);// XML columList
gc.setAuthor(AUTHOR);
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setControllerName("%sController");複製代碼
3.生成策略配置:ide
StrategyConfig strategy = new StrategyConfig();
//strategy.setTablePrefix(new String[] { "SYS_" });// 此處能夠修改成您的表前綴
strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
strategy.setInclude(new String[] {"auth_role"}); // 須要生成的表複製代碼
4.生成文件所在包配置:post
PackageConfig pc = new PackageConfig();
pc.setParent("com.yif");
pc.setController("controller");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setEntity("entity");
pc.setMapper("dao");複製代碼
5.xml文件配置:ui
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-rb");
this.setMap(map);
}
};
//xml生成路徑
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return "src/main/resources/"+"/mybatis/tables/"+tableInfo.getEntityName()+"Mapper.xml";
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 關閉默認 xml 生成,調整生成 至 根目錄
TemplateConfig tc = new TemplateConfig();
tc.setXml(null);複製代碼
6.至此,咱們該配置的都已經配置好了,只要將這些配置放入自動生成類便可(AutoGenerator):this
AutoGenerator mpg = new AutoGenerator();
mpg.setDataSource(dsc); //數據源配置
mpg.setGlobalConfig(gc); //全局配置
mpg.setStrategy(strategy); //生成策略配置
mpg.setPackageInfo(pc); //包配置
mpg.setCfg(cfg); //xml配置
mpg.setTemplate(tc); //
// 執行生成
mpg.execute();複製代碼
最後運行,便可生成一系列的無聊的代碼。spa