首先导入的pom文件:

 

<!-- freemarker 模板引擎 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<!--myBatisPlus开始-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<!-- 代码自动生成-->


<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>


<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generate</artifactId>
<version>2.3</version>
</dependency>
<!-- velocity 模板引擎, 默认 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- beetl 模板引擎 -->
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>2.2.5</version>
</dependency>

<!-- Hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.3</version>
</dependency>

 

生成代码的MAIN方法:

package com.example.mybatisPlus.common;

import cn.hutool.core.util.ClassUtil;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class MyGenerator {

public static void main(String[] args) {
MyGenerator generator = new MyGenerator();

String packageName = "com.example.mybatisPlus"; //生成文件所在的包
boolean serviceNameStartWithI = true;//user -> UserService, 设置成true: user -> IUserService

generator.generateByTables(serviceNameStartWithI, packageName,"keying"
,"music"

);
}

public static String getOutPath(){
return ClassUtil.getClassPath().replace("target/classes/","src/main/java");
}

private void generateByTables(boolean serviceNameStartWithI, String packageName, String auth,String... tableNames) {
GlobalConfig config = new GlobalConfig();
String dbUrl = "jdbc:mysql://********:3306";
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)
.setUrl(dbUrl)
.setUsername("name")
.setPassword("password")
.setDriverName("com.mysql.jdbc.Driver");


TemplateConfig tc = new TemplateConfig();
tc.setController("controller.java");
tc.setEntity("entity.java");
tc.setMapper("mapper.java");
tc.setXml("mapper.xml");
tc.setService("service.java");
tc.setServiceImpl("serviceImpl.java");

StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
// .setCapitalMode(true)
.setEntityLombokModel(true)
.setDbColumnUnderline(true)
.setNaming(NamingStrategy.underline_to_camel)
.setRestControllerStyle(true) // rest风格的controller
.setInclude(tableNames);//修改替换成你需要的表名,多个表名传数组
config.setActiveRecord(true).setEnableCache(false)
.setAuthor(auth).setIdType(IdType.UUID)
.setFileOverride(true).setBaseColumnList(true).setBaseResultMap(true)
.setOutputDir(getOutPath())
.setFileOverride(true);
if (!serviceNameStartWithI) {
config.setServiceName("%sService");
}
new AutoGenerator().setGlobalConfig(config)
// .setCfg(customerConfig(getOutPath() + "/" +packageName)) //自定义模板生成
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setTemplateEngine(new FreemarkerTemplateEngine())
.setPackageInfo(
new PackageConfig()
.setParent(packageName)
.setController("controller")
.setEntity("model")
.setMapper("dao")
.setXml("mapping")
).execute();

}
/**
* 自定义生成文件
*/
private static InjectionConfig customerConfig(String path) {
InjectionConfig config = new InjectionConfig() {
@Override
public void initMap() {

}
};

List<FileOutConfig> files = new ArrayList<FileOutConfig>();
files.add(new FileOutConfig("/templates/entity.java.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
String entityFile = String.format((path + File.separator + "%s" + ".java"), tableInfo.getEntityName());
return entityFile;
}
});
files.add(new FileOutConfig("/templates/mapper.java.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
String entityFile = String.format((path + File.separator + "%s" + ".java"), tableInfo.getMapperName());
return entityFile;
}
});
files.add(new FileOutConfig("/templates/mapper.xml.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
String entityFile = String.format((path + File.separator + "%s" + ".java"), tableInfo.getXmlName());
return entityFile;
}
});
files.add(new FileOutConfig("/templates/service.java.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
String entityFile = String.format((path + File.separator + "%s" + ".java"), tableInfo.getServiceName());
return entityFile;
}
});
files.add(new FileOutConfig("/templates/serviceImpl.java.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
String entityFile = String.format((path + File.separator + "%s" + ".java"), tableInfo.getServiceImplName());
return entityFile;
}
});
files.add(new FileOutConfig("/templates/controller.java.ftl") {
@Override
public String outputFile(TableInfo tableInfo) {
String entityFile = String.format((path + File.separator + "%s" + ".java"), tableInfo.getControllerName());
return entityFile;
}
});
config.setFileOutConfigList(files);
return config;
}

}