MyBatis Plus Generator 配置文件介绍及使用
MyBatis Plus Generator 配置文件介绍及使用
MyBatis Plus Generator 可以生成 Controller,Service,Mapper,Entity,可自写 SQL 的 mapper (resources 中)
pom.xml 配置:
<!-- MyBatis相关依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- lombok -->
<!-- 仅配置 pom 不够, 需要先安装 lombok 插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!-- lombok - end -->
MyBatisPlusGenerator 配置文件:
离增删改查只差这一个工具类!写 Controller调用就够了
配置文件 MyBatisPlusGenerator.java 源代码 :
package com.xiaopengwei;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
/**
* <p>
* MyBatis Plus Generator 配置执行类示例
* </p>
*
* @author XiaoPengwei.com
* @since 2019-04-07
*/
public class MyBatisPlusGenerator {
/**
* <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) {
// 代码生成器
AutoGenerator autoGenerator = new AutoGenerator();
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
globalConfig.setOutputDir(projectPath + "/src/main/java");
globalConfig.setAuthor("Xiao Pengwei");
globalConfig.setOpen(false);
autoGenerator.setGlobalConfig(globalConfig);
// 数据源配置 需配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1/数据库名?serverTimezone=UTC");
// dataSourceConfig.setSchemaName("public");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("密码");
autoGenerator.setDataSource(dataSourceConfig);
// 生成包配置
PackageConfig packageConfig = new PackageConfig();
//如果需要手动输入模块名
//packageConfig.setModuleName(scanner("模块名"));
packageConfig.setModuleName("ssmp");
packageConfig.setParent("com.xiaopengwei");
autoGenerator.setPackageInfo(packageConfig);
// 自定义配置
InjectionConfig injectionConfig = new InjectionConfig() {
@Override
public void initMap() {
// to do nothing
}
};
// 如果模板引擎是 freemarker
String templatePath = "/templates/mapper.xml.ftl";
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名
return projectPath + "/src/main/resources/mapper/" + packageConfig.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
injectionConfig.setFileOutConfigList(focList);
autoGenerator.setCfg(injectionConfig);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
// 配置自定义输出模板
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
// templateConfig.setEntity("templates/entity-test.java");
// templateConfig.setService();
// templateConfig.setController();
templateConfig.setXml(null);
autoGenerator.setTemplate(templateConfig);
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
// strategyConfig.setSuperEntityClass("com.baomidou.ant.common.BaseEntity");
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
// strategyConfig.setSuperControllerClass("com.baomidou.ant.common.BaseController");
// 如果 setInclude() 不加参数, 会自定查找所有表
// 如需要制定单个表, 需填写参数如: strategyConfig.setInclude("user_info);
strategyConfig.setInclude();
// strategyConfig.setSuperEntityColumns("id");
strategyConfig.setControllerMappingHyphenStyle(true);
//自动将数据库中表名为 user_info 格式的专为 UserInfo 命名
strategyConfig.setTablePrefix(packageConfig.getModuleName() + "_");
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
System.out.println("===================== MyBatis Plus Generator ==================");
autoGenerator.execute();
System.out.println("================= MyBatis Plus Generator Execute Complete ==================");
}
}