当前使用版本(必填,否则不予处理)

最新

该问题是如何引起的?(确定最新版也有问题再提!!!)

有没有连接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