xilele 发表于 2018-1-26 09:29:50

systemService.findForJdbc(sql, page, rows) 排序可能有问题

本帖最后由 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




admin 发表于 2018-1-26 15:25:58

类似问题位置是什么意思?

xilele 发表于 2018-1-26 19:03:29

本帖最后由 xilele 于 2018-1-27 13:27 编辑

admin 发表于 2018-1-26 15:25 static/image/common/back.gif
类似问题位置是什么意思?
它们中都包含有下面一样的代码:
               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

novel608 发表于 2018-1-27 14:10:35

你查看下打印出来SQL结果

xilele 发表于 2018-1-28 16:45:33

novel608 发表于 2018-1-27 14:10 static/image/common/back.gif
你查看下打印出来SQL结果

就是根据运行结果,才提出以上问题。更改源代码后这里的问题解决。没有更改 systemService.findForJdbc(sql, page, rows) 的实现,根源问题 systemService.findForJdbc(sql, page, rows) 并没有解决掉。

xilele 发表于 2018-1-28 16:45:35

本帖最后由 xilele 于 2018-1-28 16:46 编辑

novel608 发表于 2018-1-27 14:10 static/image/common/back.gif
你查看下打印出来SQL结果
就是根据运行结果,才提出以上问题。更改源代码后这里的问题解决。没有更改 systemService.findForJdbc(sql, page, rows) 的实现,根源问题 systemService.findForJdbc(sql, page, rows)按照order desc 不能实现的问题并没有解决掉。

xilele 发表于 2018-1-29 09:47:26

本帖最后由 xilele 于 2018-1-29 10:47 编辑

novel608 发表于 2018-1-27 14:10 static/image/common/back.gif
你查看下打印出来SQL结果
看看结果,就很清楚了。代码就在那里。
http://www.jeecg.org/data/attachment/forum/201801/29/094858esschc1si4sbh91s.jpg

admin 发表于 2018-1-29 11:46:19

F12 看触发什么请求,你就知道代码位置

xilele 发表于 2018-1-29 18:40:55

admin 发表于 2018-1-29 11:46 static/image/common/back.gif
F12 看触发什么请求,你就知道代码位置

不知道,是怀揣明白,还是装作糊涂,真是奇怪去了。问题不是很明白吗?还在绕什么弯子,直面可能的bug,方是程序员起码的正道意识。

xilele 发表于 2018-1-29 18:40:56

admin 发表于 2018-1-29 11:46 static/image/common/back.gif
F12 看触发什么请求,你就知道代码位置

不知道,是怀揣明白,还是装作糊涂,真是奇怪去了。问题不是很明白吗?还在绕什么弯子,直面可能的bug,方是程序员起码的正道意识。
页: [1] 2
查看完整版本: systemService.findForJdbc(sql, page, rows) 排序可能有问题