MyBatisPlus 升级到 3.5.1 (上个版本3.3.1)版本后,发现一些 api 调用方式调整了。代码生成器也是一堆提示。根据官网说明,现将新的代码生成方式贴出来,供参考。
支持手动输入模块及表名,部分属性定义了没使用,待扩展。
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.apache.commons.lang3.StringUtils;
import java.nio.file.Paths;
import java.util.*;
public class CodeGenerator {
private static Map<String, Map<String, Object>> properties = new HashMap<>();
public static String projectName = "";
public static String parentPackage = "com.example";
public static List tablePrefix = Arrays.asList();
public static String url = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true";
public static String username = "root";
public static String password = "123456";
public static String database = "test";
public static String driverClass = "com.mysql.cj.jdbc.Driver";
/**
* <p>
* 读取控制台内容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
generator();
}
public static void generator() {
System.out.println("properties:" + properties);
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(url, username, password).build();
String userDir = System.getProperty("user.dir");
String projectPath = Paths.get(userDir, projectName).toString();
// 全局配置
GlobalConfig globalConfig = new GlobalConfig.Builder()
.outputDir(Paths.get(projectPath, Paths.get("src", "main", "gen").toString()).toString())
.author("generator")
//.disableOpenDir()
.fileOverride() // 覆盖已生成的文件
.dateType(DateType.ONLY_DATE).build();
String outOutputDir = globalConfig.getOutputDir();
System.out.println("outOutputDir:" + outOutputDir);
// 包配置
PackageConfig packageConfig = new PackageConfig.Builder()
.parent(parentPackage)
.entity("domain.entity")
.moduleName(scanner("模块名"))
.build();
System.out.println("parentPackage:" + packageConfig.getParent());
StrategyConfig.Builder strategyConfigBuilder = new StrategyConfig.Builder();
strategyConfigBuilder.addInclude(scanner("表名,多个英文逗号分割").split(","));
// Entity策略
strategyConfigBuilder.entityBuilder()
.idType(IdType.AUTO)
.enableLombok()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.formatFileName("%sEntity")
// .enableRemoveIsPrefix()
;
// Mapper策略
strategyConfigBuilder.mapperBuilder()
.enableBaseResultMap()
.enableBaseColumnList();
// 模板配置
TemplateConfig templateConfig = new TemplateConfig.Builder()
.disable(TemplateType.CONTROLLER)
.build();
// 代码生成器
AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig)
.global(globalConfig)
.packageInfo(packageConfig)
.template(templateConfig)
.strategy(
strategyConfigBuilder.build()
);
autoGenerator.execute();
}
}
依赖参考
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!--p6spy-->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.7</version>
</dependency>
<!--mybatis plus generator-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>