一、mybatis-plus分頁查詢原理
mybatis-plus是基於mybatis的增強工具,提供了很多實用的功能,其中之一就是分頁查詢。mybatis-plus的分頁查詢原理就是通過攔截器攔截查詢請求,根據傳入的分頁參數進行查詢並返回分頁結果。
mybatis-plus內置了一個分頁攔截器PaginationInterceptor,在mybatis配置文件中配置該攔截器即可實現分頁查詢。此外,mybatis-plus還提供了Page類來封裝分頁信息,同時也提供了PageHelper類來實現類似於傳統的分頁方式。
二、mybatis-plus多表分頁
在實際應用中,經常需要進行多表關聯查詢並進行分頁。mybatis-plus同樣提供了類似於mybatis的方式通過xml配置進行多表查詢。在xml文件中通過<select>
標籤指定查詢語句,在<where>
標籤中可以進行多表關聯查詢。在分頁時,需要先查詢出所有結果再進行分頁,這會導致數據量很大時性能不佳。因此,建議對多表分頁進行優化。
三、mybatis-plus分頁查詢優化
對於大數據量的分頁查詢,性能很重要。mybatis-plus提供了兩種方式進行分頁查詢優化:
1. Count優化:mybatis-plus提供了一個CountOptimizeInterceptor實現Count優化,它的原理是通過優化count語句的執行,從而減少total數量的查詢時間。
2. 延遲加載:mybatis-plus提供了一個緩存機制,當查詢的結果較大時,可以採用延遲加載,提高查詢性能。
四、mybatis-plus分頁查詢10w
在日常開發中,經常需要進行大量數據的分頁查詢。在mybatis-plus中,可以通過設置分頁參數,來查詢大量數據並進行分頁。例如:
PageHelper.startPage(1, 100000); List<User> list = userMapper.selectList(null); PageInfo<User> pageInfo = new PageInfo<>(list);
上面的代碼中,設置了分頁參數為1頁,每頁100000條數據。這樣就可以查詢出大量數據並進行分頁。
五、mybatis-plus分頁查詢例子
下面我們通過一個簡單的例子介紹mybatis-plus的分頁查詢:
// 分頁查詢參數 Page<User> page = new Page<>(1, 10); // 查詢第1頁,每頁10條數據 // 查詢條件 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.like("name", "張"); // 查詢名字包含"張"的用戶 // 執行查詢 IPage<User> userPage = userService.page(page, wrapper); List<User> users = userPage.getRecords(); // 輸出查詢結果 for (User user : users) { System.out.println(user.getName()); }
上面的示例中,我們設置了分頁查詢參數為查詢第1頁,每頁10條數據。在查詢條件中,使用了mybatis-plus提供的QueryWrapper類,查詢名字中包含”張”的用戶。最後執行查詢並輸出結果。
六、mybatisplus分頁查詢全部數據
分頁查詢結果一般是按照每頁一定數量的數據進行分割的,但有時候我們需要查詢全部數據,並且希望按照每頁一定數量的數據進行分割。mybatis-plus提供了一個selectAll方法來實現這個功能。
// 分頁查詢參數 Page<User> page = new Page<>(1, 10); // 查詢第1頁,每頁10條數據 // 查詢條件 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.like("name", "張"); // 查詢名字包含"張"的用戶 // 執行查詢 List<User> users = userService.selectAll(page, wrapper); // 輸出查詢結果 for (User user : users) { System.out.println(user.getName()); }
在上面的示例中,我們使用了mybatis-plus提供的selectAll方法來實現查詢全部數據,並按照每頁一定數量的數據進行分割。
七、mybatis分頁查詢
在mybatis中,我們可以使用mybatis自帶的分頁插件PageHelper來進行分頁查詢。PageHelper是一個非常實用的插件,可以非常方便地實現傳統的分頁查詢。
// 分頁查詢參數 PageHelper.startPage(1, 10); // 查詢第1頁,每頁10條數據 // 查詢條件 UserExample example = new UserExample(); UserExample.Criteria criteria = example.createCriteria(); criteria.andNameLike("%張%"); // 查詢名字包含"張"的用戶 // 執行查詢 List<User> users = userMapper.selectByExample(example); PageInfo<User> pageInfo = new PageInfo<>(users); // 輸出查詢結果 for (User user : pageInfo.getList()) { System.out.println(user.getName()); }
在上面的示例中,我們使用了mybatis的自帶分頁插件PageHelper來實現分頁查詢,並按照每頁一定數量的數據進行分割。
八、mybatis分頁查詢插件
在mybatis中,我們也可以使用一些第三方的插件來實現分頁查詢。例如,現在常用的幾個分頁插件有PageHelper、Mybatis-Plus、Mybatis-Paginator等。
其中,我們已經介紹了mybatis-plus的分頁查詢,而PageHelper和Mybatis-Paginator的使用方法與mybatis-plus類似,這裡就不再做過多介紹。
九、mybatisplus多表查詢
mybatis-plus提供了非常便捷的多表查詢方式,只需要在mapper.xml文件中定義好查詢語句即可。
// xml文件中定義查詢語句 <select id="selectUserList" resultMap="userResultMap"> select u.*,r.role_name from t_user u left join t_role r on u.role_id=r.id // 在mapper接口中調用查詢語句 List<User> userList = userMapper.selectUserList();
在上面的示例中,我們在xml文件中定義了一個查詢語句,查詢t_user和t_role兩個表,並在mapper接口中調用了該查詢語句。這樣就可以實現多表查詢。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/307429.html