当前使用版本(必填,否则不予处理)
最新
该问题是如何引起的?(确定最新版也有问题再提!!!)
有没有连接oracle的代码生成器样例,我这里连接之后只生成了目录,没有任何报错信息
重现步骤(如果有就写完整)
报错信息
Comment From: nieqiurong
看是不是设置指定表生成了,最好粘贴上你的代码。
Comment From: aibowen
@nieqiurong 这是我的代码
package com.yun.hcf.app.blf.util; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.generator.AutoGenerator; 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.TemplateConfig; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; import java.util.Scanner;
public class CodeGenerator {
private static final String mysql_url = "jdbc:mysql://127.0.0.1:3306/blf2?serverTimezone=UTC";
private static final String mysql_driver = "com.mysql.jdbc.Driver";
private static final String mysql_username = "root";
private static final String mysql_password = "root";
private static final String oracle_url = "jdbc:oracle:thin:@localhost:1521/pdborcl";
private static final String oracle_driver = "oracle.jdbc.driver.OracleDriver";
private static final String oracle_username = "orablf";
private static final String oracle_password = "orablf";
public static String scanner(String input) {
Scanner scanner = new Scanner(System.in);
StringBuilder helpInfo = new StringBuilder();
helpInfo.append("请输入" + input + ":");
System.out.println(helpInfo.toString());
if (scanner.hasNext()) {
String next = scanner.next();
if (StringUtil.isNotEmpty(next)) {
return next;
}
}
throw new MybatisPlusException("请输入正确的" + input + "!");
}
public static void main(String[] args) {
AutoGenerator autoGenerator = new AutoGenerator();
//全局配置
GlobalConfig config = new GlobalConfig();
config.setAuthor("bowen");
config.setOutputDir("D:\\ideaspace\\blf_2.1_xishang\\002_SourceCodes\\server\\blf\\src\\main\\java\\");
config.setOpen(true);
config.setSwagger2(true);
config.setXmlName("%sMapper");
autoGenerator.setGlobalConfig(config);
//数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
String dbType = scanner("数据库:");
if ("oracle".equals(dbType)) {
dataSourceConfig.setUrl(oracle_url);
dataSourceConfig.setDriverName(oracle_driver);
dataSourceConfig.setUsername(oracle_username);
dataSourceConfig.setPassword(oracle_password);
} else if ("mysql".equals(dbType)) {
dataSourceConfig.setUrl(mysql_url);
dataSourceConfig.setDriverName(mysql_driver);
dataSourceConfig.setUsername(mysql_username);
dataSourceConfig.setPassword(mysql_password);
}
autoGenerator.setDataSource(dataSourceConfig);
//包配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setModuleName(scanner("模块名"));
packageConfig.setParent("com.yun.hcf.app.blf");
packageConfig.setController("web");
packageConfig.setEntity("domain");
packageConfig.setMapper("persistence");
packageConfig.setService("service");
autoGenerator.setPackageInfo(packageConfig);
//模板配置
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setController("templates/controller.java");
templateConfig.setService("templates/service.java");
templateConfig.setEntity("templates/entity.java");
templateConfig.setMapper("templates/mapper.java");
templateConfig.setXml("templates/mapper.xml");
autoGenerator.setTemplate(templateConfig);
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setSuperEntityClass("com.yun.hcf.core.domain.Domain");
strategyConfig.setSuperServiceClass("com.yun.hcf.core.service.BaseService");
strategyConfig.setSuperEntityColumns("id");
strategyConfig.setControllerMappingHyphenStyle(true);
strategyConfig.setTablePrefix("bl_");
strategyConfig.setInclude(scanner("表名,多个英文逗号隔开").split(","));
autoGenerator.setStrategy(strategyConfig);
autoGenerator.setTemplateEngine(new FreemarkerTemplateEngine());
autoGenerator.execute();
}
}
Comment From: nieqiurong
填写表名的时候输入大写的表名。
Comment From: aibowen
@nieqiurong 还是没有生成文件
Comment From: aibowen
模板文件使用plus包中的吗
Comment From: qmdx
注释这一行生成所有试试,如果不行请 debug 下看看原因
strategyConfig.setInclude(scanner("表名,多个英文逗号隔开").split(","));
Comment From: aibowen
注释这一行生成所有试试,如果不行请 debug 下看看原因
strategyConfig.setInclude(scanner("表名,多个英文逗号隔开").split(","));
Comment From: aibowen
@qmdx 注释掉这一行代码,确实可以,不过设置表名前缀的方法没有生效
Comment From: qmdx
不过设置表名前缀的方法没有生效
你需要 debug 下源码自己解决,这边也没有你的环境无法处理,搞定可以 pull request
Comment From: aibowen
好的
Comment From: aibowen
调试了一下发现是oracle的schema和表名都是大写的原因
Comment From: qmdx
调试了一下发现是oracle的schema和表名都是大写的原因
大写那么你传入的表名也必须大写,那就不是 Bug