@final 在社区发了一遍,因问题比较急又在此重新提问,望见谅!
我的代码如下:
List<Object> param=new ArrayList<Object>();
StringBuffer where=new StringBuffer();
String rightsArea=getRightsArea();
if(!rightsArea.equals("")){
where.append(" and FIND_IN_SET(b.code,?)");
param.add(rightsArea);
}
orderby=" order by a.name asc,b.code desc";
String tableName="(select a.id,a.name,b.code from a left join b on a.id=b.id) tbl";
Page<Record> p = Db.paginate(this.getParaToInt("page", 1), this.getParaToInt("pageSize", 20), "select *", "from " + tableName+ " where 1=1 " + where.toString()+orderby, param.toArray());
执行的时候会提示sql错误,原因是jfinal得到的sql语句如下:
select count(*) from (select a.id,a.name,b.code from a left join b on a.id=b.id) tbl where 1=1 ,b.code desc
也就是说框架在计算行数时读取order by时错误(在包含逗号的多个排序条件中),是否我的写法有误?
请指教,谢谢!
jfinal 的 paginate 方法为了提升性能,所以会将计算总记录数的 sql 中 order by 部分给清除掉,因为查询总记录数量不需要 order by。所以你的 sql 参数在被清除这个 order by 时不正确,由于清除时用的正则表达式,所以正则匹配不到时只清掉了一部分。
建议改一下 sql ,或者在合适的地方添加扩号来解决。
######请教个问题,使用jfinal分页的时候,如何获取总记录数?加上totalRow=page.totalRow 总是报错
<@paginate totalRow=page.totalRow currentPage=page.pageNumber totalPage=page.totalPage .............
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。