Ⅰ MyBatis怎樣實現MySQL動態分頁
一、mysql 使用limit 子句來實現資料庫的物理分頁,limit 子句接受 一個或兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數量。在mybatis 中,只需要在相 應的查詢語句後,加上limit 子句,即可實現物理分頁。如下,以 一個只有欄位id,name,age 的表為例。該配置會根據傳入的 hashmap,如果含有鍵start 和鍵end,那麼即通過mybatis 強大的 動態sql,生成含有mysql 分頁的sql語句。 select * from users limit #{start},#{end}
二、myts 簡介
mybatis,前稱ibatis,後改名為mybatis,截止本文成文,最新 版本是3.0.6。它和hibernate 是java世界使用最多的兩種orm 框 架。hibernate 理念最為先進,完全實現面向對象的資料庫編程,不需要掌握sql 語句,即可實現資料庫操作,能夠節省開發人員編 寫大量sql語句的時間。但是,hibernate 在處理多表關聯時,可 能會出現n+1 問題,性能會有較大影響,要解決性能問題,需要較 深的hibernate 知識和項目經驗。mybatis 需要自己寫sql 語句, 開發效率不如hibernate,很難做到底層多資料庫的通用。但對程 序員來說有更高的可控性,可以更容易的對sql 語句進行優化,提 高效率。
在開發中直接使用jdbc 一個非常普遍的問題就是動態sql。如果 參數值、參數本身和數據列都是動態sql,通常的解決方法就是寫很多if-else 條件語句和字元串連接。而mybatis 通過ognl 提供 了一套非常清晰的方法來解決動態sql 的問題。
Ⅱ MySQL大數據量分頁查詢方法及其優化
使用子查詢優化大數據量分頁查詢
這種方式的做法是先定位偏移位置的id,然後再往後查詢,適用於id遞增的情況。
使用id限定優化大數據量分頁查詢
使用這種方式需要先假設數據表的id是連續遞增的,我們根據查詢的頁數和查詢的記錄數可以算出查詢的id的范圍,可以使用 id between and 來查詢:
當然了,也可以使用in的方式來進行查詢,這種方式經常用在多表關聯的情況下,使用其他表查詢的id集合來進行查詢:
但是使用這種in查詢方式的時候要注意的是,某些MySQL版本並不支持在in子句中使用limit子句。
參考 sql優化之大數據量分頁查詢(mysql) - yanggb - 博客園 (cnblogs.com)
Ⅲ MySql中查詢語句實現分頁功能
pageNow代表當前頁面,第一頁。