分页方法好像不支持 ..... order by case when ...


分页方法好像不支持   ..... order by case when .... 这样的写法.数据库是可以正常执行

order by otr.urgeRemarkFlag,CASE WHEN otr.urgeRemarkFlag=0 THEN minuteNum ELSE minuteNum2 END desc,otr.orderIdx

错误:

com.jfinal.plugin.activerecord.ActiveRecordException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHEN otr.urgeRemarkFlag=0 THEN minuteNum ELSE minuteNum2 END desc,otr.orderIdx ' at line 19

at com.jfinal.plugin.activerecord.DbPro.doPaginate(DbPro.java:566)

at com.jfinal.plugin.activerecord.DbPro.paginate(DbPro.java:1361)

at com.jfinal.plugin.activerecord.Db.paginate(Db.java:725)

at org.flmall.member.service.WhatsAppService.paginateOrder(WhatsAppService.java:1193)


评论区

杜福忠

2023-07-25 09:52

因为分页有割掉order by,这种复杂的order by需要跳过一下,我之前有遇到过类似的需求,有加一个扩展处理进行跳过切割,
分享内容在: https://jfinal.com/share/2533
或者使用手册里面介绍的 https://jfinal.com/doc/5-6
第 "5、常见问题解决" 内容有介绍如何处理

chcode

2023-08-14 15:03

@杜福忠 还有比较省事的做法就是利用druid提供的PagerUtils.count PagerUtils.limit 方法来代替jfinal原本提供的生成count sql 和分页取数据的sql

杜福忠

2023-08-14 16:12

@chcode 是嘞,自己封装一个分页方法再转调工具类也很方便了

Dreamlu

2023-08-17 14:18

@chcode @杜福忠 @夜の幕 哈哈哈,我写过,拷贝即用:https://gitee.com/596392912/mica/blob/2.7.x/mica-activerecord/src/main/java/net/dreamlu/mica/activerecord/dialect/DruidSqlDialect.java

热门反馈

扫码入社