一零七六、启动配置自动生成(一键生成Controller,service,serviceImpl,entity,mapper,xml等)
·
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
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.converts.ClickHouseTypeConvert;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.ClickHouseQuery;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Function;
/**
* MpGenerator启动类
*
* @author Tuomasi
* @date
*/
public class MpGenerator {
private static final Logger logger = LoggerFactory.getLogger(MpGenerator.class);
private static final Properties CONF = new Properties();
static {
try {
InputStream in = MpGenerator.class.getClassLoader().getResourceAsStream("mp-generate.properties");
CONF.load(in);
} catch (IOException e) {
logger.error("发生异常:", e);
}
}
/**
* 数据库配置
*/
private static DataSourceConfig.Builder DATA_SOURCE_CONFIG() {
System.out.print("请输入数据源(mysql/clickhouse):");
Scanner sc = new Scanner(System.in);
String input = sc.next();
if("mysql".equals(input.trim().toLowerCase())) {
String url = CONF.getProperty("mysql.jdbc.url");
String user = CONF.getProperty("mysql.jdbc.user");
String pswd = CONF.getProperty("mysql.jdbc.password");
String schema = CONF.getProperty("mysql.jdbc.schema");
return new DataSourceConfig.Builder(url, user, pswd)
.dbQuery(new MySqlQuery())
.schema(schema)
.typeConvert(new MySqlTypeConvert())
.keyWordsHandler(new MySqlKeyWordsHandler());
} else if("clickhouse".equals(input.trim().toLowerCase())) {
String url = CONF.getProperty("clickhouse.jdbc.url");
String user = CONF.getProperty("clickhouse.jdbc.user");
String pswd = CONF.getProperty("clickhouse.jdbc.password");
String schema = CONF.getProperty("clickhouse.jdbc.schema");
return new DataSourceConfig.Builder(url, user, pswd)
.dbQuery(new ClickHouseQuery())
.schema(schema)
.typeConvert(new ClickHouseTypeConvert())
.keyWordsHandler(new MySqlKeyWordsHandler());
} else {
throw new RuntimeException("不支持该数据源!");
}
}
/**
* 全局配置
*/
private static BiConsumer<Function<String, String>, GlobalConfig.Builder> GLOBAL_CONFIG() {
String root_path = System.getProperty("user.dir");
return (scanner, builder) -> builder.author(scanner.apply("请输入作者名称?"))
//不覆盖重名文件
//.fileOverride()
.outputDir(root_path+"/src/main/java")
.enableSwagger()
.dateType(DateType.TIME_PACK)
.commentDate("yyyy-MM-dd HH:mm:ss")
//代码生成后不打开目录
.disableOpenDir();
}
/**
* 包配置
*/
private static BiConsumer<Function<String, String>, PackageConfig.Builder> PACKAGE_CONFIG() {
return (scanner, builder) -> builder.parent("com")
.moduleName("test")
.entity("model.domain.mp")
.service("service.mp")
.serviceImpl("service.impl.mp")
.mapper("mapper.mp")
.xml("mapper.mp.xml")
.controller("controller.mp")
.other("other.mp");
}
/**
* 策略配置
*/
private static BiConsumer<Function<String, String>, StrategyConfig.Builder> STRATEGY_CONFIG() {
return (scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?(所有输入all)")))
.controllerBuilder()
.enableRestStyle()
.enableHyphenStyle()
.entityBuilder()
.enableLombok()
.enableChainModel()
.addTableFills(
new Column("create_time", FieldFill.INSERT),
new Column("update_time", FieldFill.UPDATE)
);
}
/**
* 处理所有表
*/
private static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
public static void main(String[] args) {
//数据库配置 区分clickhouse和mysql
FastAutoGenerator.create(DATA_SOURCE_CONFIG())
// 全局配置
.globalConfig(GLOBAL_CONFIG())
// 包配置
.packageConfig(PACKAGE_CONFIG())
// 策略配置
.strategyConfig(STRATEGY_CONFIG())
/*
模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
.templateEngine(new BeetlTemplateEngine())
.templateEngine(new FreemarkerTemplateEngine())
*/
.execute();
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)