一、 什麼是分頁查詢
分頁查詢是指在數據量較大的情況下,將查詢結果分成多頁展示,分別通過翻頁的方式來顯示所有的結果。
這種方式避免了一次載入大量數據導致頁面響應變慢的問題,同時也可以方便地實現對查詢結果的控制。
二、 MyBatis分頁查詢的優勢
MyBatis是一個優秀的ORM(Object-Relational Mapping)框架,可以提供靈活且強大的分頁查詢功能。
MyBatis的分頁查詢最大的優勢就是它的參數化處理,可以很方便地動態生成SQL語句。
MyBatis還支持自定義分頁查詢規則,與具體的資料庫無關,可以使得應用程序更加靈活和獨立。
三、 MyBatis分頁查詢的實現
1、在mapper.xml中定義分頁查詢語句和參數
<select id="selectByPage" parameterType="map" resultMap="userResult"> select * from user where user_name like #{searchName} limit #{start}, #{size} </select>
其中searchName表示查詢條件,start表示分頁查詢的起始位置(索引從0開始),size表示每頁顯示的數據條數。
2、在DAO層中調用分頁查詢方法
public List<User> selectByPage(int start, int size, String searchName) { Map<String, Object> map = new HashMap<>(); map.put("start", start); map.put("size", size); map.put("searchName", searchName); return sqlSession.selectList("com.example.MyMapper.selectByPage", map); }
四、 MyBatis分頁查詢的應用
在實際的應用中,可能需要在頁面中展示大量的數據,例如管理系統中的用戶信息,商品信息等等。
此時,使用MyBatis的分頁查詢功能就可以很方便地實現數據的分頁展示。
下面是一個使用Spring Boot和MyBatis實現分頁查詢的示例(MyBatis的配置可以參考官方文檔):
五、 示例代碼
1、在mapper.xml中定義分頁查詢語句和參數
<select id="selectByPage" parameterType="map" resultMap="userResult"> select * from user where user_name like #{searchName} limit #{start}, #{size} </select>
2、在DAO層中調用分頁查詢方法
public List<User> selectByPage(int start, int size, String searchName) { Map<String, Object> map = new HashMap<>(); map.put("start", start); map.put("size", size); map.put("searchName", searchName); return sqlSession.selectList("com.example.MyMapper.selectByPage", map); }
3、在Service層中處理分頁邏輯
public List<User> findByPage(int page, int size, String searchName) { int start = (page - 1) * size; return userDao.selectByPage(start, size, searchName); }
4、在Controller層中處理分頁請求
@RequestMapping("/list") public String userList(@RequestParam(name = "page", defaultValue = "1") int page, @RequestParam(name = "searchName", defaultValue = "") String searchName, Model model) { int size = 10; // 每頁顯示10條數據 List<User> userList = userService.findByPage(page, size, searchName); model.addAttribute("userList", userList); return "userList"; }
原創文章,作者:SJBP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135588.html