1. 程式人生 > >mybatis在詳情頁裡操作上一頁下一頁

mybatis在詳情頁裡操作上一頁下一頁

現在是剛入門級的程式設計師,今天在做詳情頁的時候要做上一條、下一條這樣的操作。最開始想到的是用分頁的思維做,其實也是用分頁的原理,但是不是直接的分頁原理來處理,需要拐個彎。

最開始我就直接點選列表裡的“檢視詳情”後獲取到主鍵id(我們所有的id都是使用uuid),然後把id傳到後臺。最開始我連這個id都沒用到,原諒我這個菜鳥總是丟三拉屎,這樣很不好(認真臉。。。)直接就使用封裝好的分頁介面,然後每頁顯示一條的原理。ok,這樣做完,我擦,聚完美!一頁一條。100條資料就有100頁。呵呵,天真可愛善良的小姑娘。然後迅速地被自己的天真給打敗了,後來請教了一下公司裡的前輩,加上上網查的資料,後來就是這樣做。。。

網上查出的資料是這樣的

方法一:
查詢上一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
1
select * from table_a where id = (select id from table_a where id < {$id} [and other_conditions] order by id desc limit 1) [and other_conditions];
查詢下一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
1
select * from table_a where id = (select id from table_a where id > {$id} [and other_conditions] order by id asc limit 1) [and other_conditions];
方法二:
查詢上一條記錄的SQL語句((如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤))
1
select * from table_a where id = (select max(id) from table_a where id < {$id} [and other_conditions]) [and other_conditions];
查詢下一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
1
select * from table_a where id = (select min(id) from table_a where id > {$id} [and other_conditions]) [and other_conditions];

但是我們用的id不是自增的,所以id的不行。後面我就根據建立時間來,同樣的道理,把裡面的id換成createTime

方法一:
查詢上一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
1
select * from table_a where createTime = (select createTime from table_a where createTime < {$createTime} [and other_conditions] order by id desc limit 1) [and other_conditions];
查詢下一條記錄的SQL語句(如果有其他的查詢條件記得加上other_conditions以免出現不必要的錯誤):
1
select * from table_a where createTime= (select createTime from table_a where createTime > {$createTime} [and other_conditions] order by id asc limit 1) [and other_conditions];

然後加上一些條件,不然可能在有同一時間的其他的資料

然後把獲取的資料返回到介面,點選上一頁和下一頁的時候就和從列表頁檢視詳情一個道理。

但是我覺得我的程式碼還是需要優化,感覺很多時候思路繞了很多彎,不知道這個要怎麼破?好像只能多多寫程式碼了