Jfinal order by 分页查询

白菜100 发布于 2015/01/28 11:58
阅读 1K+
收藏 0

今天使用JFinal 进行分页查询, 现在SQLLite里面写好了SQL语句,放置Jfinal中进行分页查询,发现一个问题,运行如下:

SQL语句:select * from userInfo ui where 1=1 order by ui.`FirstWord`

运行JFinal后,SQL语句为:

Sql: select count(*) from `userInfo` ui where 1=1 `FirstWord`

后经过调试发现源码中 com.jfinal.plugin.activerecord.DbKit.replaceFormatSqlOrderBy(String sql) 在截取SQL 中的 “Order by ” 时,没有将order by 后面的给截取掉, 故运行结果为 :select count(*) from userInfo ui where 1=1 `FirstWord`

解决方案:

将 ui.`FirstWord` 修改 ui.FirstWord  ,运行结果正常。

不清楚这是不是一个Bug,希望能修改一下

调用方法

Db.paginate(1, 10, "select *",  "from userInfo ui where 1=1 order by ui.`FirstWord` ")

加载中
0
JFinal
JFinal
      DbKit.replaceFormatSqlOrderBy(...) 方法无法清掉 order by 后面带有 "`" 字符的字符串造成的,通常 sql 语句中这个字符只用于包装数据库关键字或保留字,已备忘,未来版本会改进下正则以便正确移除 "`" 包装后的字符串。
0
xiuj
xiuj
你是不是方法调用错了。
0
白菜100

调用方法

Db.paginate(1, 10, "select *",  "from userInfo ui where 1=1 order by ui.`FirstWord` ")

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部