Mybatis使用IPAGE排序错误

一、错误信息

//分页排序
page.setOrders(OrderItem.descs("publish_time"));

报错信息
failed to concat orderBy from IPage, exception=null

这里”failed to concat orderBy from IPage, exception=null“只是提示你错误了,但是没有提及是哪里出现问题

二、检查错误原因

@Test
public void testSqlParser() throws Exception{
        String sql = "";
        CCJSqlParserUtil.parse(sql);
}

通过CCJSqlParserUtil.parse可以抛出SQL的问题所在,一般为关键字冲突、函数使用不匹配导致

三、例子

我这里的SQL为

sql: select a,b,IF(c=1 or d=2,0,1) as f from table;

这里是会提示SQL的IF关键字出现问题,但是这个SQL是可以执行成功,Ipage的排序解析认为这个SQL是错误的

而只有一个IF条件时,解析是正确的,所以这里抛出问题不一定是你的SQL问题,而是这个分页排序的问题

sql: select a,b,IF(c=1,0,1) as f from table;

现在就是两种解决办法:

  1. 放弃Ipage的排序功能,将排序语句写在SQL中
  2. 修改IF,在判断中只保留一个条件

你可能感兴趣的:(mybatis)