关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 26601|回复: 10

[代码生成器] systemService.findForJdbc(sql, page, rows) 排序可能有问题

[复制链接]
发表于 2018-1-26 09:29:50 | 显示全部楼层 |阅读模式
本帖最后由 xilele 于 2018-1-29 09:53 编辑

jeecg 3.7.2 数据库为MariaDB。
发现可能的问题(?)
描述疑问:
程序中 使用了   systemService.findForJdbc(sql, page, rows)     这句结果排序则有问题

sql 语句中 有 order by ??? DESC
结果集好像只按 ASC排出。有同事碰到没?

web\system\controller\core\DepartController.java
private synchronized String getMaxLocalCode(String parentCode)
............
                sb.append(" ORDER BY org_code DESC");
                List<Map<String, Object>> objMapList = systemService.findForJdbc(sb.toString(), 1, 1);
                String returnCode = null;
                if(objMapList!=null && objMapList.size()>0){
                        returnCode = (String)objMapList.get(0).get("org_code");
                }

                return returnCode;

returnCode 返回   “A01”,   按照预期应该返回"A03",那么新增加一个公司,就为A04,而现在返回A01,新增就为A02

sb.append(" ORDER BY org_code DESC");
systemService.findForJdbc(sb.toString(), 1, 1);
A01 A02 A03  =>A01

正确结果应该是
A03 A02 A01  => A03


类似问题代码,还有这些文件位置:
web\system\controller\core\DepartController.java

web\system\controller\core\SystemController.java

web\system\service\impl\CategoryServiceImpl.java




a02a04排序bug

a02a04排序bug
发表于 2018-1-26 15:25:58 | 显示全部楼层
类似问题位置是什么意思?
 楼主| 发表于 2018-1-26 19:03:29 | 显示全部楼层
本帖最后由 xilele 于 2018-1-27 13:27 编辑
admin 发表于 2018-1-26 15:25
类似问题位置是什么意思?

它们中都包含有下面一样的代码:
               sb.append(" ORDER BY org_code DESC");
                List<Map<String, Object>> objMapList = systemService.findForJdbc(sb.toString(), 1, 1);
                String returnCode = null;
                if(objMapList!=null && objMapList.size()>0){
                        returnCode = (String)objMapList.get(0).get("org_code");
                }

                return returnCode;
备注:
数据库为MariaDB
版本 MySQL Server: 10.2.1-MariaDB
发表于 2018-1-27 14:10:35 | 显示全部楼层
你查看下打印出来SQL结果
 楼主| 发表于 2018-1-28 16:45:33 | 显示全部楼层
novel608 发表于 2018-1-27 14:10
你查看下打印出来SQL结果

就是根据运行结果,才提出以上问题。更改源代码后这里的问题解决。没有更改 systemService.findForJdbc(sql, page, rows) 的实现,根源问题 systemService.findForJdbc(sql, page, rows) 并没有解决掉。
 楼主| 发表于 2018-1-28 16:45:35 | 显示全部楼层
本帖最后由 xilele 于 2018-1-28 16:46 编辑
novel608 发表于 2018-1-27 14:10
你查看下打印出来SQL结果

就是根据运行结果,才提出以上问题。更改源代码后这里的问题解决。没有更改 systemService.findForJdbc(sql, page, rows) 的实现,根源问题 systemService.findForJdbc(sql, page, rows)  按照order desc 不能实现的问题并没有解决掉。
 楼主| 发表于 2018-1-29 09:47:26 | 显示全部楼层
本帖最后由 xilele 于 2018-1-29 10:47 编辑
novel608 发表于 2018-1-27 14:10
你查看下打印出来SQL结果

看看结果,就很清楚了。代码就在那里。


发表于 2018-1-29 11:46:19 | 显示全部楼层
F12 看触发什么请求,你就知道代码位置
 楼主| 发表于 2018-1-29 18:40:55 | 显示全部楼层
admin 发表于 2018-1-29 11:46
F12 看触发什么请求,你就知道代码位置

不知道,是怀揣明白,还是装作糊涂,真是奇怪去了。问题不是很明白吗?还在绕什么弯子,直面可能的bug,方是程序员起码的正道意识。
 楼主| 发表于 2018-1-29 18:40:56 | 显示全部楼层
admin 发表于 2018-1-29 11:46
F12 看触发什么请求,你就知道代码位置

不知道,是怀揣明白,还是装作糊涂,真是奇怪去了。问题不是很明白吗?还在绕什么弯子,直面可能的bug,方是程序员起码的正道意识。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表