package com.jiuxiao;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
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.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Scanner;
public class CodeGenerator {
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入" + tip + " : ");
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNoneBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
final String url = "jdbc:mysql://localhost:3306/jxc?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai";
final String username = "root";
final String password = "0531";
final String driverName = "com.mysql.cj.jdbc.Driver";
final String templatePath = "/templates/mapper.xml.ftl";
AutoGenerator mpg = new AutoGenerator();
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/jxc-admin/src/main/java");
gc.setAuthor("悟道九霄");
gc.setOpen(false);
gc.setBaseResultMap(true);
gc.setBaseColumnList(true);
gc.setSwagger2(true);
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(url);
dsc.setDriverName(driverName);
dsc.setUsername(username);
dsc.setPassword(password);
PackageConfig pc = new PackageConfig();
pc.setParent("com.jiuxiao")
.setEntity("pojo")
.setMapper("mapper")
.setService("service")
.setServiceImpl("service.impl")
.setController("controller");
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
}
};
ArrayList<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig(templatePath) {
@Override
public String outputFile(TableInfo tableInfo) {
return projectPath + "/jxc-admin/src/main/resources/mapper/" + tableInfo.getEntityName()
+ "Mapper" + StringPool.DOT_XML;
}
});
cfg.setFileOutConfigList(focList);
TemplateConfig tc = new TemplateConfig();
tc.setXml(null);
StrategyConfig sc = new StrategyConfig();
sc.setNaming(NamingStrategy.underline_to_camel);
sc.setColumnNaming(NamingStrategy.underline_to_camel);
sc.setEntityLombokModel(true);
sc.setRestControllerStyle(false);
sc.setInclude(scanner("表名,使用多个英文逗号分隔").split(","));
sc.setControllerMappingHyphenStyle(true);
sc.setTablePrefix("t_");
mpg.setGlobalConfig(gc);
mpg.setDataSource(dsc);
mpg.setPackageInfo(pc);
mpg.setCfg(cfg);
mpg.setTemplate(tc);
mpg.setStrategy(sc);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!