分页查询orderby


Page<Record> pages = Db.paginate(iStartIndex/iLength+1, iLength, "select *", "from t_user where id <> '1' and isdelete <> '1' order by case when id in ("+userid+") then 0 else 1 end,"+sortFiled+" "+orderType);

这个会解析成

select count(*) from t_user where id <> '1' and isdelete <> '1'  when id in ('') then 0 else 1 end,id asc

order by后面忽略了一个case导致mysql报错

我是想在分页排序的时候指定几条特定的数据在最上面

评论区

JFinal

2016-10-12 11:28

jfinal 的 paginate 没有支持这样复合的 order by 语句,解决办法极其简单,假定你使用的是 mysql 数据库:
public class MyDialect extends MySqlDialect {
public String replaceOrderBy(String sql) {
return sql;
}
}
上面的自定义 MyDialect 中覆盖掉了父类的 replaceOrderBy 语句,直接 return sql即可

然后再替换掉方言: arp.setDialect(new MyDialect()),jfinal 2.3 将会改进这里,可支持任意复杂的 order by

哦哈

2016-10-12 11:53

已经解决了。覆盖之后,就OK。

弩张

2020-10-21 16:50

最新的4.9.02版本jfinal sqlserver测试还是不行,老大,@JFinal

热门反馈

扫码入社