关于Model的doPaginate 方法的一些建议

今天看了一下 paginate的源码,发现在代码中会区分有没有group by ,替换order by 等这些和具体sql相关的东西,感觉这样代码处理会比较累,还有可能情况处理不全。


我的建议是 对sql语句不进行处理,如果sql有误就和正常一样报sql异常


对于分页的处理我们可以在传过来的sql报上一层


比如


原语句是 select org_id from elm.org order by org_name;


我们在处理的时候给他包上一层组成新的sql,如下


select * from (select org_id from elm.org order by org_name) ;


然后后边的代码只需要对这个sql进行分页处理就可以了,这样无论红色的sql多么复杂,我们后台的逻辑都会很简单。


不知道我说的对不对,还是我考虑的太简单了


评论区

JFinal

2017-10-30 17:57

很多数据库根本就不支持 select count(*) 中带有 order by 子句,jfinal 比任何人都更希望方案简单

group by 如果不处理,用在分页中时直接就造成分页错误。将 sql 包裹在 select * from(...) 内部,性能不如现有的方案

快乐的蹦豆子

2017-11-03 17:13

包起来确实性能有一定的影响