JFinal

登录 注册

使用分页时出现问题

我sql代码输出为:

SELECT

t.*,

c2.cname,

a.realname,

a.id AS aid,

c2.id AS fid,

c3.cname AS edu,

(

SELECT

(

CASE

t.type 

WHEN 'jian' THEN

( SELECT COUNT( id ) FROM da_archive_jian r WHERE r.taskid = t.id AND r.del_flag = 0 ) ELSE ( SELECT COUNT( id ) FROM da_archive_juan r WHERE r.taskid = t.id AND r.del_flag = 0 ) 

END 

) AS acount 

FROM

da_task t

LEFT JOIN da_category c1 ON c1.id = t.categoryid

LEFT JOIN da_category c2 ON c2.id = t.fondsid

LEFT JOIN da_category c3 ON c3.id = c1.level1id

LEFT JOIN da_account a ON 1 = 1 

WHERE

t.del_flag = 0 

AND a.id = t.manageuserid 

AND t.accountid = 1 

ORDER BY

( t.state = 3 || t.state = 6 ) DESC;


在查询count时,是我写的问题还是框架转化问题,输出sql为:

SELECT

count( * ) 

FROM

da_task t

LEFT JOIN da_category c1 ON c1.id = t.categoryid

LEFT JOIN da_category c2 ON c2.id = t.fondsid

LEFT JOIN da_category c3 ON c3.id = c1.level1id

LEFT JOIN da_account a ON 1 = 1 

WHERE

t.del_flag = 0 

AND a.id = t.manageuserid 

AND t.accountid = 1 || t.state=6) desc;


去掉最后|| 之后的内容就没问题

image.png

使用paginateByFullSql也是这个样子

有没有遇到过类似情况的

评论

  • 01-08 14:57
    @JFinal 麻烦能看一下嘛
  • 01-08 15:05
    你的 sql 中使用了比较多的嵌套,使用 paginateByFullSql 是极好的

    假定使用参数为 paginateByFullSql(1, 10, sqlAaa, sqlBbb, paras) ,注意如下几点:
    1:sqlAaa 与 sqlBbb 要能完全共用后方的 paras 这个参数
    2:剩下的问题就是保证你的 sqlAaa、sqlBbb 要写对,在 jfinal 的层面仅仅是将你的 sql + 参数 直接扔给了 JDBC,未做任何干预
  • 01-08 15:06
    最后,注意看一下有关分页的文档:
    https://www.jfinal.com/doc/5-6

    里头详细说明了碰到的问题以及解决办法,比我在这里要详细得多
  • 发送