import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import com.ixinnuo.common.db.MyGenerator;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan(value = {"com.core.mapper"})
public class MybatisPlusConfig {
@Bean
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
}
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
public static void main(String[] args) {
MyGenerator.generator(MyGenerator.getDir(), "com.core", "ecp_", "ecp_subsidiary_table");
}
}
package com.ixinnuo.common.db;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.ixinnuo.common.utils.YamlUtils;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyGenerator extends AutoGenerator {
private static final String propertiesName = "application.yml";
public static String domain_name = "ecp-entity";
public static String srcdir = ".";
public static boolean onlyEntity = false;
public static String driverName = "com.mysql.cj.jdbc.Driver";
public static String url =
"jdbc:mysql://127.0.0.1:3306/zx_dev?useUnicode=true&characterEncoding=UTF" + "-8" +
"&zeroDateTimeBehavior=convertToNull&useSSL=false";
public static String username = "root";
public static String password = "1234";
static {
initDatasource();
}
private static void initDatasource() {
driverName = YamlUtils.getStr("spring.datasource.driverClassName", "com.mysql.cj.jdbc.Driver", propertiesName);
username = YamlUtils.getStr("spring.datasource.username", username, propertiesName);
password = YamlUtils.getStr("spring.datasource.password", password, propertiesName);
url = YamlUtils.getStr("spring.datasource.url", url, propertiesName);
System.out.println("init");
}
public static void main(String[] args) {
MyGenerator.url = "123456";
String srcdir = getDir(Thread.currentThread().getClass());
System.out.println(srcdir);
System.out.println(getDir(MyGenerator.class));
System.out.println(url);
}
public static void generator(String srcdir, String packageName, String tablePrefix, String... tableNames) {
MyGenerator.srcdir = srcdir;
final String dir = srcdir + File.separator + "src" + File.separator + "main";
String srcdir1 = getDir(MyGenerator.class);
File domainFile = FileUtil.file(srcdir1);
final String entityPath =
domainFile.getParentFile().getParent() + File.separator + domain_name + File.separator + "src" + File.separator + "main";
System.out.println(entityPath);
String moduleName = "system";
String htmlDir =
dir + File.separator + "resources" + File.separator + "templates" + File.separator + moduleName + File.separator;
String jsDir =
dir + File.separator + "resources" + File.separator + "static" + File.separator + "common" + File.separator + moduleName + File.separator;
MyGenerator mpg = new MyGenerator();
GlobalConfig gc = new GlobalConfig();
gc.setOpen(false);
gc.setOutputDir(dir + File.separator + "java");
gc.setFileOverride(false);
gc.setEnableCache(false);
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
gc.setActiveRecord(true);
gc.setDateType(DateType.ONLY_DATE);
gc.setAuthor("Cary");
mpg.setGlobalConfig(gc);
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setDriverName(driverName);
dsc.setUsername(username);
dsc.setPassword(password);
dsc.setUrl(url);
mpg.setDataSource(dsc);
StrategyConfig strategy = new StrategyConfig();
strategy.setTablePrefix(tablePrefix);
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setInclude(tableNames);
strategy.setSuperControllerClass("com.ixinnuo.common.core.BaseController");
mpg.setStrategy(strategy);
PackageConfig pc = new PackageConfig();
pc.setParent(packageName);
pc.setController("controller");
pc.setXml(null);
mpg.setPackageInfo(pc);
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<>();
map.put("moduleName", moduleName);
this.setMap(map);
}
};
List<FileOutConfig> focList = new ArrayList<>();
List<String> vms = new ArrayList<String>();
for (final String tem : vms) {
focList.add(new FileOutConfig("/templates/velocity/html/" + tem + ".html.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
String fileDir = htmlDir + tableInfo.getEntityPath() + File.separator;
FileUtil.mkdir(fileDir);
return fileDir + tem + ".html";
}
});
focList.add(new FileOutConfig("/templates/velocity/js/" + tem + ".js.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
String fileDir = jsDir + tableInfo.getEntityPath() + File.separator;
FileUtil.mkdir(fileDir);
return fileDir + tem + ".js";
}
});
}
focList.add(new FileOutConfig(ConstVal.TEMPLATE_XML + ".vm") {
@Override
public String outputFile(TableInfo tableInfo) {
String path =
entityPath + File.separator + "resources" + File.separator + "mapper" + File.separator + tableInfo.getEntityName() + "Mapper.xml";
if (exists(path)) {
path = System.getProperty("java.io.tmpdir") + File.separator + "NopMapper.xml";
}
return path;
}
});
focList.add(new FileOutConfig(ConstVal.TEMPLATE_ENTITY_JAVA + ".vm") {
@Override
public String outputFile(TableInfo tableInfo) {
String path = entityPath + File.separator + "java" + File.separator + StrUtil.replace(packageName, "."
, File.separator) + File.separator + "entity" + File.separator + tableInfo.getEntityName() +
".java";
if (exists(path)) {
path = System.getProperty("java.io.tmpdir") + File.separator + "NopEntity.java";
}
return path;
}
});
focList.add(new FileOutConfig(ConstVal.TEMPLATE_MAPPER + ".vm") {
@Override
public String outputFile(TableInfo tableInfo) {
String path = entityPath + File.separator + "java" + File.separator + StrUtil.replace(packageName, "."
, File.separator) + File.separator + "mapper" + File.separator + tableInfo.getEntityName() + ConstVal.MAPPER + ".java";
if (exists(path)) {
path = System.getProperty("java.io.tmpdir") + File.separator + "NopMapper.java";
}
return path;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
TemplateConfig tc = new TemplateConfig();
tc.setEntity(null);
tc.setMapper(null);
tc.setXml(null);
if (onlyEntity) {
tc.setController(null);
tc.setService(null);
tc.setServiceImpl(null);
}
mpg.setTemplate(tc);
mpg.execute();
System.out.println(getDir());
}
@Override
public void execute() {
if (null == config) {
config = new ConfigBuilder(getPackageInfo(), getDataSource(), getStrategy(), getTemplate(),
getGlobalConfig());
if (null != injectionConfig) {
injectionConfig.setConfig(config);
}
}
AbstractTemplateEngine templateEngine = null;
if (null == templateEngine) {
templateEngine = new MyVelocityTemplateEngine();
}
templateEngine.init(this.pretreatmentConfigBuilder(config)).mkdirs().batchOutput().open();
}
@SuppressWarnings("unused")
private static String[] getExcludeTables() {
List<String> excludeTablesList = new ArrayList<>();
excludeTablesList.add("t_test");
excludeTablesList.add("t_*");
String[] excludeTables = new String[excludeTablesList.size()];
return excludeTablesList.toArray(excludeTables);
}
public static String getDir() {
return getDir(Thread.currentThread().getClass());
}
public static String getDir(Class clazz) {
String url = clazz.getResource("/").getFile();
try {
url = URLDecoder.decode(url, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
File file = new File(url);
url = file.getParentFile().getParent();
return url;
}
private static boolean exists(String filePath) {
File file = new File(filePath);
return file.exists();
}
class MyVelocityTemplateEngine extends VelocityTemplateEngine {
@Override
public Map<String, Object> getObjectMap(TableInfo tableInfo) {
Map<String, Object> objectMap = super.getObjectMap(tableInfo);
if (null != this.getConfigBuilder().getInjectionConfig()) {
Map<String, Object> initMap = this.getConfigBuilder().getInjectionConfig().getMap();
if (initMap != null) {
objectMap.putAll(initMap);
}
}
return objectMap;
}
}
}