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 或其他具有相同效果的东西

至于INSERTsDELETEs,"next"和"previous"可以工作"correctly",但是跳转到任意页面是有歧义的,因为可能发生的变化。

当前页的第 3 页标题是 seq < $this ORDER BY seq DESC LIMIT 15,5(或类似的内容。

更多关于分页的信息here