SQL for Spring 使用 Mariadb 的网站分页
SQL for Spring Web Site Paging using Maria DB
我的网站是由 Spring 框架制作的。
并且还使用 Mybatis。
在我的网站上,有公告栏页面。
这是棋盘 table。
TB_BOARD
seq(pk), user_seq, title, category, content, reg_time
现在我要应用分页
所以我检查了 Maria DB 文档。
他们说使用 pk 而不是 offset。
好的,我明白了。。但是有问题。
如果我的公告板页面只有上一个和下一个按钮,没有问题。
我会这样写我的SQL:
下一个
select * from TB_BOARD where seq < #{last_seq} order by seq desc limit 5
上一个
select * from TB_BOARD where seq >= #{last_seq} order by seq desc limit 5
但是公告页面是否有编号的分页按钮?
[1][2][3][4][5]
然后有人点击了 [4] 按钮..我如何获取 [4] 按钮的记录?
在我看来,记录可以更改(更新,删除),seq 将不再是连续的。
所以无法预测。
没有 "select @rownum" 就没有办法做到这一点吗?
谢谢。
如果我理解 seq
正确,'previos' 查询需要 ASC
,而不是 DESC
。
如果您要 [1][2]...
包含所有可能的页面,那您是在自找麻烦。我假设您只列出下一页和上一页,例如 5 页。也就是说,如果您在第 13 页,按钮将显示 8..18。 (加上,也许 [first]
和 [last]
.
您不得使用 hard-coded "sequence" 号码。相反,使用 datetime
或其他具有相同效果的东西
至于INSERTs
和DELETEs
,"next"和"previous"可以工作"correctly",但是跳转到任意页面是有歧义的,因为可能发生的变化。
当前页的第 3 页标题是 seq < $this ORDER BY seq DESC LIMIT 15,5
(或类似的内容。
更多关于分页的信息here。
我的网站是由 Spring 框架制作的。
并且还使用 Mybatis。
在我的网站上,有公告栏页面。
这是棋盘 table。
TB_BOARD
seq(pk), user_seq, title, category, content, reg_time
现在我要应用分页
所以我检查了 Maria DB 文档。
他们说使用 pk 而不是 offset。
好的,我明白了。。但是有问题。
如果我的公告板页面只有上一个和下一个按钮,没有问题。
我会这样写我的SQL:
下一个
select * from TB_BOARD where seq < #{last_seq} order by seq desc limit 5
上一个
select * from TB_BOARD where seq >= #{last_seq} order by seq desc limit 5
但是公告页面是否有编号的分页按钮?
[1][2][3][4][5]
然后有人点击了 [4] 按钮..我如何获取 [4] 按钮的记录?
在我看来,记录可以更改(更新,删除),seq 将不再是连续的。
所以无法预测。
没有 "select @rownum" 就没有办法做到这一点吗?
谢谢。
如果我理解 seq
正确,'previos' 查询需要 ASC
,而不是 DESC
。
如果您要 [1][2]...
包含所有可能的页面,那您是在自找麻烦。我假设您只列出下一页和上一页,例如 5 页。也就是说,如果您在第 13 页,按钮将显示 8..18。 (加上,也许 [first]
和 [last]
.
您不得使用 hard-coded "sequence" 号码。相反,使用 datetime
或其他具有相同效果的东西
至于INSERTs
和DELETEs
,"next"和"previous"可以工作"correctly",但是跳转到任意页面是有歧义的,因为可能发生的变化。
当前页的第 3 页标题是 seq < $this ORDER BY seq DESC LIMIT 15,5
(或类似的内容。
更多关于分页的信息here。