一、该问题的重现步骤是什么?
1. 代码生成工具,如果数据表是s_xxxx_syyyy,,表单replace后生成的实体类名称是Xxxxyyyy。中间第二个s也被替换掉了。预期至少应该是XxxxSyyyyy
Bladex 3.4.0版本发现问题, 查看4.0版本也没修复。
问题排查Bladex项目下的develop模块代码问题
if (tableName.contains(StringPool.UNDERSCORE)) { tableInfo.setEntityName(tableInfo.getEntityName().replace(StringUtil.firstCharToUpper(tableName.split(StringPool.UNDERSCORE)[0]), StringPool.EMPTY)); }
if (tableName.contains(StringPool.UNDERSCORE)) 先判定数据表是否含有下划线"_"。
如果含有下划线,之后执行的replace方法有问题,因为被替换的字符串内容获取到的是StringUtil.firstCharToUpper(tableName.split(StringPool.UNDERSCORE)[0] 对于本例来说就是"S"。
断点调试本例tableInfo.getEntityName() =“SXxxxSyyyy"。
最终就是“SXxxxSyyyy".replace("S", StringPool.EMPTY) 结果等于Xxxxyyyy。
官方和大家可以按需修改。
由于我们这边实体类需要保留表prefix(有一些表只是prefix前缀不一样)。当表名是s_xxxx_syyyy实体类是SXxxxSyyyy所以直接去掉了 bladex原有的处理直接返回,
if (iterator.hasNext()) { tableInfo = iterator.next(); return tableInfo; } return null;
扫一扫访问 Blade技术社区 移动端