generator
generator copied to clipboard
plus-3.5.2-代码生成器-oracle11g-error
当前使用版本(必填,否则不予处理)
plus: 3.5.1 代码生成器 3.5.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
数据库 oracle 11g
重现步骤(如果有就写完整)
String url = "jdbc:oracle:thin:@101.43.126.97:11521:xe"; String username = "esb"; String passwd = "esb#123"; FastAutoGenerator.create( url, username, passwd // new DataSourceConfig.Builder(url, username, passwd) // .dbQuery(new OracleQuery()) // .typeConvert(new OracleTypeConvert()) // .schema("esb") ) // FastAutoGenerator.create(new Builder(url, username, passwd).schema("esb")) .globalConfig( builder -> { builder .author("auto-maker") // 设置作者 .disableOpenDir() .dateType(DateType.TIME_PACK) .outputDir(projectPath + "/src/main/java"); // 指定输出目录 }) .packageConfig( builder -> { builder .parent("com.amita.ez") // 设置父包名 // .moduleName("system") // 设置父包模块名 .xml("mapper"); // .pathInfo( // Collections.singletonMap(OutputFile.mapperXml, "D://")); // // 设置mapperXml生成路径 }) .strategyConfig( builder -> { builder .enableCapitalMode() .addInclude("bootlog") .controllerBuilder() .enableRestStyle() .enableHyphenStyle() .entityBuilder() .enableLombok() .enableActiveRecord() .build(); })
.execute();
报错信息
bootlog 2022-04-22 11:52:30.277 [main] WARN org.apache.velocity.deprecation - configuration key 'file.resource.loader.unicode' has been deprecated in favor of 'resource.loader.file.unicode' 2022-04-22 11:52:30.280 [main] WARN org.apache.velocity.deprecation - configuration key 'file.resource.loader.class' has been deprecated in favor of 'resource.loader.file.class' 2022-04-22 11:52:31.117 [main] WARN c.b.m.g.IDatabaseQuery$DefaultDatabaseQuery - 表[bootlog]在数据库中不存在!!!
请帮忙解决, 谢谢!
表名参数要用BOOTLOG,而不是小写的bootlog,因为执行的语句是 SELECT * FROM ALL_TAB_COMMENTS WHERE OWNER='ESB' AND TABLE_NAME IN ('BOOTLOG') 这里的表名查询是作为参数的,所以是区分大小写的。 @xuzhou2016 最后建议:不要把线上数据库地址和密码随便暴露。
@xuzhou2016 这个是数据库版本不一致导致的,近期已在修复此类问题
@xuzhou2016 hello,新版3.5.3 已发布,默认已采用元数据查询数据库信息的方式实现,防止不同版本所用的查询数据库信息的SQL语句不同的情况出现
@lanjerry 大佬帮俺瞧瞧 (●'◡'●)
数据库版本:mysql 5.7.38/8.0.29 都试过提示表不存在;但是通过调试断点,在方法filter(tableList, includeTableList, excludeTableList)里给tableList,includeTableList两个列表里直接给表名又可以生成
依赖版本: implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.5.2' implementation group: 'com.baomidou', name: 'mybatis-plus-generator', version: '3.5.3' implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.29'
代码: public class MybatisPlusGenerator {
/**
* 数据源配置
*/
private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://localhost:3307/mysql", "root", "123456")
.schema("mysql");
@Test
public void generatorTable() {
FastAutoGenerator.create(DATA_SOURCE_CONFIG)
.globalConfig(builder -> {
builder.author("soapman") // 设置作者
//.enableSwagger() // 开启 swagger 模式
.disableOpenDir() // 执行完毕不打开文件夹
.outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.soapman") // 设置父包名
//.controller("controller") // 生成controller层
.entity("entity") // 生成实体层
.service("service") // 生成service层
.mapper("mapper"); // 生成mapper层
})
.strategyConfig(builder -> {
builder.addInclude("t_user") // 设置需要生成的表名
.addTablePrefix("t_") // 设置过滤表前缀
.serviceBuilder() //开启service策略配置
.formatServiceFileName("%sService") //取消Service前的I
.controllerBuilder() //开启controller策略配置
.enableRestStyle() //配置restful风格
.enableHyphenStyle() //url中驼峰转连字符
.entityBuilder() //开启实体类配置
.enableLombok() //开启lombok
.enableChainModel(); //开启lombok链式操作
})
//.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
提示信息:
_ _ |_ _ |. ___ _ | _
| | |/|)(| | |\ |)|||\
/ |
3.5.2
2022-07-01 20:30:00.712 INFO 13704 --- [ Test worker] com.soapman.MybatisPlusGenerator : Started MybatisPlusGenerator in 2.791 seconds (JVM running for 3.924)
2022-07-01 20:30:01.227 WARN 13704 --- [ Test worker] org.apache.velocity.deprecation : configuration key 'file.resource.loader.unicode' has been deprecated in favor of 'resource.loader.file.unicode'
2022-07-01 20:30:01.227 WARN 13704 --- [ Test worker] org.apache.velocity.deprecation : configuration key 'file.resource.loader.class' has been deprecated in favor of 'resource.loader.file.class'
2022-07-01 20:30:01.254 WARN 13704 --- [ Test worker] c.b.m.generator.query.DefaultQuery : 表[t_user]在数据库中不存在!!!
BUILD SUCCESSFUL in 5s
t_user
请确定 t_user 表是否存在
t_user
请确定 t_user 表是否存在
存在啊,我打断点在方法filter(tableList, includeTableList, excludeTableList)里给tableList,includeTableList两个列表里直接给表名t_user可以生成
@soapmancn hello,我这边试了下是OK的。你要不提供个demo?
@soapmancn hello,我这边试了下是OK的。你要不提供个demo?
//TODO 暂时采取内存过滤,还需要找数据库测试schema return databaseMetaDataWrapper.getTables(null, skipView ? new String[]{"TABLE"} : new String[]{"TABLE", "VIEW"});
你们这段代码有问题导致获取取不到表; 我是docker里部署的mysql 8.0.28 然后idea里的datagrid直接建的t_user表,它的类型是 SYSTEM TABLE;我DatabaseMetaData.getTableTypes()调试了下,获取到的类型有下面这些 LOCAL TEMPORARY SYSTEM TABLE SYSTEM VIEW TABLE VIEW
@soapmancn 类型是 SYSTEM TABLE是咋创建出来的,把表的脚本提供一下,我试一下
@soapmancn 类型是 SYSTEM TABLE是咋创建出来的,把表的脚本提供一下,我试一下
我就idea 里的 datagrid 那里手动建的表,它生成的脚本是这样的
create table t_user ( id int auto_increment, name int null, constraint t_user_pk primary key (id) );
@soapmancn 类型是 SYSTEM TABLE是咋创建出来的,把表的脚本提供一下,我试一下
@soapmancn 那你先把查询方式换成走SQL的方式吧,DataSourceConfig的databaseQueryClass(SQLQuery.class)